home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 8 / The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO / prg_gen / inter52b.zip / INTERRUP.F < prev    next >
Text File  |  1996-10-20  |  247KB  |  6,493 lines

  1. Interrupt List, part 6 of 15
  2. Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996 Ralf Brown
  3. --------D-215F00-----------------------------
  4. INT 21 - DOS 3.1+ network - GET REDIRECTION MODE
  5.     AX = 5F00h
  6.     BL = redirection type
  7.         03h printer
  8.         04h disk drive
  9. Return: CF set on error
  10.         AX = error code (see #1020 at AH=59h/BX=0000h)
  11.     CF clear if successful
  12.         BH = redirection state
  13.         00h off
  14.         01h on
  15. Note:    calls INT 2F/AX=111Eh with AX on top of the stack
  16. SeeAlso: AX=5F01h,INT 2F/AX=111Eh
  17. --------D-215F01-----------------------------
  18. INT 21 - DOS 3.1+ network - SET REDIRECTION MODE
  19.     AX = 5F01h
  20.     BL = redirection type
  21.         03h printer
  22.         04h disk drive
  23.     BH = redirection state
  24.         00h off
  25.         01h on
  26. Return: CF set on error
  27.         AX = error code (see #1020 at AH=59h/BX=0000h)
  28.     CF clear if successful
  29. Notes:    when redirection is off, the local device (if any) rather than the
  30.       remote device is used
  31.     calls INT 2F/AX=111Eh with AX on top of the stack
  32. SeeAlso: AX=5F00h,INT 2F/AX=111Eh,INT 60/AX=0002h
  33. --------D-215F02-----------------------------
  34. INT 21 - DOS 3.1+ network - GET REDIRECTION LIST ENTRY
  35.     AX = 5F02h
  36.     BX = zero-based redirection list index
  37.     CX = driver signature
  38.         0000h LANtastic
  39.         4E57h ('NW') NetWare
  40.     DS:SI -> 16-byte buffer for ASCIZ local device name or drive letter
  41.           followed by colon
  42.     ES:DI -> 128-byte buffer for ASCIZ network name
  43. Return: CF clear if successful
  44.         BH = device status
  45.         00h valid
  46.         01h invalid
  47.         02h valid (connected from inside Windows for Workgroups v3.11)
  48.         BL = device type
  49.         03h printer
  50.         04h disk drive
  51.         CX = user data previously set with AX=5F03h
  52.         DS:SI and ES:DI buffers filled
  53.         DX,BP destroyed
  54.     CF set on error
  55.         AX = error code (01h,12h) (see #1020 at AH=59h/BX=0000h)
  56. Notes:    this function is passed through to INT 2F/AX=111Eh by the DOS kernel
  57.     error code 12h is returned if BX is greater than the size of the list
  58.     also supported by Banyan VINES, PC-NFS, LANtastic, and 10NET
  59.     supported by LapLink RemoteAccess but returns the local drive letter;
  60.       the remote drive letter can be obtained with INT 2F/AX=Cxxxh
  61.       (see INT 2F/AX=C000h"LapLink")
  62.     the returned device name may or may not include a colon, depending on
  63.       the network software
  64. SeeAlso: AX=5F03h,AX=5F46h,INT 2F/AX=111Eh,INT 2F/AX=C000h"LapLink"
  65. --------D-215F03-----------------------------
  66. INT 21 - DOS 3.1+ network - REDIRECT DEVICE
  67.     AX = 5F03h
  68.     BL = device type
  69.         03h printer
  70.         04h disk drive
  71.     CX = user data to save
  72.         0000h for LANtastic
  73.         4E57h ("NW") for NetWare 4.0 requester
  74.     DS:SI -> ASCIZ local device name (16 bytes max)
  75.     ES:DI -> ASCIZ network name + ASCIZ password (128 bytes max total)
  76. Return: CF clear if successful
  77.     CF set on error
  78.         AX = error code (01h,03h,05h,08h,0Fh,12h) (see #1020 at AH=59h)
  79. Notes:    if device type is disk drive, DS:SI must point at either a null string
  80.       or a string consisting the drive letter followed by a colon; if a
  81.       null string, the network attempts to access the destination without
  82.       redirecting a local drive
  83.     the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
  84.     also supported by Banyan VINES, LANtastic, and 10NET
  85. SeeAlso: AX=5F02h,AX=5F04h,INT 2F/AX=111Eh,INT 60/AX=0002h
  86. --------D-215F04-----------------------------
  87. INT 21 - DOS 3.1+ network - CANCEL REDIRECTION
  88.     AX = 5F04h
  89.     DS:SI -> ASCIZ local device name or path
  90.     CX = 4E57h ("NW") for NetWare 4.0 requester
  91. Return: CF clear if successful
  92.     CF set on error
  93.         AX = error code (01h,03h,05h,08h,0Fh,12h) (see #1020 at AH=59h)
  94. Notes:    the DS:SI string must be either a local device name, a drive letter
  95.       followed by a colon, or a network directory beginning with two
  96.       backslashes
  97.     the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
  98.     also supported by Banyan VINES, LANtastic, and 10NET
  99.     for NetWare, if only a server name is specified (i.e. "\\SERVER"),
  100.       the connection to that server will be closed
  101. SeeAlso: AX=5F03h,INT 2F/AX=111Eh,INT 60/AX=0003h
  102. --------D-215F05-----------------------------
  103. INT 21 - DOS 4.0+ network - GET EXTENDED REDIRECTION LIST ENTRY
  104.     AX = 5F05h
  105.     BX = redirection list index
  106.     DS:SI -> buffer for ASCIZ source device name
  107.     ES:DI -> buffer for destination ASCIZ network path
  108. Return: CF set on error
  109.         AX = error code (see #1020 at AH=59h/BX=0000h)
  110.     CF clear if successful
  111.         AX = server's network process ID handle (10NET)
  112.         BH = device status flag (bit 0 clear if valid)
  113.         BL = device type (03h if printer, 04h if drive)
  114.         CX = stored parameter value (user data) from AX=5F03h
  115.         BP = NETBIOS local session number
  116.         DS:SI buffer filled
  117.         ES:DI buffer filled
  118. Notes:    the local session number allows sharing the redirector's session number
  119.     if an error is caused on the NETBIOS LSN, the redirector may be unable
  120.       to correctly recover from errors
  121.     the DOS kernel calls INT 2F/AX=111Eh with AX on top of the stack
  122.     supported by DR DOS 5.0
  123.     also supported by 10NET v5.0
  124. SeeAlso: AX=5F06h"Network",INT 2F/AX=111Eh
  125. --------O-215F05-----------------------------
  126. INT 21 - STARLITE architecture - MAP LOCAL DRIVE LETTER TO REMOTE FILE SYSTEM
  127.     AX = 5F05h
  128.     DL = drive number (0=A:)
  129.     DS:SI -> ASCIZ name of the object to map the drive to
  130. Return: CF set on error
  131.         AX = error code (see #1020 at AH=59h/BX=0000h)
  132.     CF clear if successful
  133. SeeAlso: AX=5F06h"STARLITE",INT 60/AX=0002h
  134. --------N-215F06-----------------------------
  135. INT 21 U - Network - GET FULL REDIRECTION LIST
  136.     AX = 5F06h
  137.     ???
  138. Return: ???
  139. Notes:    similar to AX=5F02h and AX=5F05h, but also returns redirections
  140.       excluded from those calls for various reasons
  141.     calls INT 2F/AX=111Eh with AX on top of the stack
  142. SeeAlso: AX=5F05h"DOS",INT 2F/AX=111Eh
  143. --------O-215F06-----------------------------
  144. INT 21 - STARLITE architecture - UNMAP DRIVE LETTER
  145.     AX = 5F06h
  146.     DL = drive to be unmapped (0=A:)
  147. Return: CF set on error
  148.         AX = error code (see #1020 at AH=59h/BX=0000h)
  149.     CF clear if successful
  150. SeeAlso: AX=5F05h"STARLITE",INT 60/AX=0003h
  151. --------D-215F07-----------------------------
  152. INT 21 - DOS 5+ - ENABLE DRIVE
  153.     AX = 5F07h
  154.     DL = drive number (0=A:)
  155. Return: CF clear if successful
  156.     CF set on error
  157.         AX = error code (0Fh) (see #1020 at AH=59h/BX=0000h)
  158. Notes:    simply sets the "valid" bit in the drive's CDS
  159.     this function is not supported by Novell DOS 7 through at least
  160.       Update 4, but support was added by Update 13
  161. SeeAlso: AH=52h,AX=5F08h"DOS"
  162. --------O-215F07-----------------------------
  163. INT 21 - STARLITE architecture - MAKE NAMED OBJECT AVAILABLE ON NETWORK
  164.     AX = 5F07h
  165.     DS:SI -> ASCIZ name of object to offer to network
  166.     ES:DI -> ASCIZ name under which object will be known on the network
  167.         MUST begin with three slashes
  168. Return: CF set on error
  169.         AX = error code (see #1020 at AH=59h/BX=0000h)
  170.     CF clear if successful
  171. SeeAlso: AX=5F08h"STARLITE"
  172. --------D-215F08-----------------------------
  173. INT 21 - DOS 5+ - DISABLE DRIVE
  174.     AX = 5F08h
  175.     DL = drive number (0=A:)
  176. Return: CF clear if successful
  177.     CF set on error
  178.         AX = error code (0Fh) (see #1020 at AH=59h/BX=0000h)
  179. Notes:    simply clears the "valid" bit in the drive's CDS
  180.     this function is not supported by Novell DOS 7 through at least
  181.       Update 4, but support was added by Update 13
  182. SeeAlso: AH=52h,AX=5F07h"DOS"
  183. --------O-215F08-----------------------------
  184. INT 21 - STARLITE architecture - REMOVE GLOBAL NETWORK NAME OF OBJECT
  185.     AX = 5F08h
  186.     DS:SI -> ASCIZ network name (not local name) of object to unshare
  187. Return: CF set on error
  188.         AX = error code (see #1020 at AH=59h/BX=0000h)
  189.     CF clear if successful
  190. SeeAlso: AX=5F07h"STARLITE"
  191. --------O-215F09-----------------------------
  192. INT 21 - STARLITE architecture - BIND TO NETWORK DEVICE
  193.     AX = 5F09h
  194.     DS:DX -> ASCIZ name of the device driver to attach to
  195. Return: CF set on error
  196.         AX = error code (see #1020 at AH=59h/BX=0000h)
  197.     CF clear if successful
  198. Note:    the STARLITE distributed file system can attach to multiple networks
  199.       simultaneously
  200. SeeAlso: AX=5F0Ah
  201. --------O-215F0A-----------------------------
  202. INT 21 - STARLITE architecture - DETACH FROM NETWORK DEVICE
  203.     AX = 5F0Ah
  204.     DS:DX -> ASCIZ name of device driver to detach from
  205. Return: CF set on error
  206.         AX = error code (see #1020 at AH=59h/BX=0000h)
  207.     CF clear if successful
  208. SeeAlso: AX=5F09h
  209. --------N-215F30-----------------------------
  210. INT 21 U - LAN Manager Enhanced DOS - GET REDIRECTOR VERSION
  211.     AX = 5F30h
  212. Return: AX = version (AH=major,AL=minor)
  213. --------N-215F32-----------------------------
  214. INT 21 u - Named Pipes - LOCAL DosQNmPipeInfo
  215.     AX = 5F32h
  216.     BX = handle
  217.     CX = size of _PIPEINFO structure
  218.     DX = level (must be 0001h)
  219.     DS:SI -> _PIPEINFO structure (see #1041)
  220. Return: CF clear if successful
  221.         _PIPEINFO structure filled in
  222.     CF set on error
  223.         AX = error code
  224. Note:    this function was introduced by LAN Manager but is also supported by
  225.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  226.       Machines, and others
  227. SeeAlso: AX=5F33h,AX=5F34h
  228.  
  229. Format of Named Pipes _PIPEINFO structure:
  230. Offset    Size    Description    (Table 1041)
  231.  00h    WORD    size of outgoing buffer
  232.  02h    WORD    size of incoming buffer
  233.  04h    BYTE    maximum number of instances allowed
  234.  05h    BYTE    current number of instances
  235.  06h    BYTE    length of the name (including terminating NUL)
  236.  07h  N BYTEs    name
  237. --------N-215F33-----------------------------
  238. INT 21 u - Named Pipes - LOCAL DosQNmPHandState
  239.     AX = 5F33h
  240.     BX = handle
  241. Return: CF clear if successful
  242.         AH = pipe mode bit mask (see #1042)
  243.         AL = maximum number of instances
  244.     CF set on error
  245.         AX = error code
  246. Note:    this function was introduced by LAN Manager but is also supported by
  247.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  248.       Machines, and others
  249. SeeAlso: AX=5F32h,AX=5F34h
  250.  
  251. Bitfields for Named Pipes pipe mode:
  252. Bit(s)    Description    (Table 1042)
  253.  7    set if nonblocking, clear if blocking
  254.  6    set if server end, clear if client end
  255.  2    set if write in message mode, clear if write in byte mode
  256.  0    set if read in message mode, clear if read in byte mode
  257. --------N-215F34-----------------------------
  258. INT 21 u - Named Pipes - LOCAL DosSetNmPHandState
  259.     AX = 5F34h
  260.     BX = handle
  261.     CX = pipe mode bit mask
  262.         bit 15: set if nonblocking, clear if blocking
  263.         bit     8: set if read in message mode, clear if read in byte mode
  264. Return: CF clear if successful
  265.     CF set if error
  266.         AX = error code
  267. Note:    this function was introduced by LAN Manager but is also supported by
  268.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  269.       Machines, and others
  270. SeeAlso: AX=5F32h,AX=5F33h,AX=5F36h
  271. --------N-215F35-----------------------------
  272. INT 21 u - Named Pipes - LOCAL DosPeekNmPipe
  273.     AX = 5F35h
  274.     BX = handle
  275.     CX = buffer length
  276.     DS:SI -> buffer
  277. Return: CF set on error
  278.         AX = error code
  279.     CF clear if successful (LAN Manager v1-v2)
  280.     AX = 0000h if successful (LAN Manager 3.x)
  281.     ---if successful---
  282.         CX = bytes read
  283.         SI = bytes left in the pipe
  284.         DX = bytes left in the current message
  285.         AX = pipe status (v1-v2) (see #1043)
  286.         DI = pipe status (v3.x)
  287. Note:    this function was introduced by LAN Manager but is also supported by
  288.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  289.       Machines, and others
  290. SeeAlso: AX=5F38h,AX=5F39h,AX=5F51h
  291.  
  292. (Table 1043)
  293. Values for pipe status:
  294.  0001h    disconnected
  295.  0002h    listening
  296.  0003h    connected
  297.  0004h    closing
  298. --------N-215F36-----------------------------
  299. INT 21 u - Named Pipes - LOCAL DosTransactNmPipe
  300.     AX = 5F36h
  301.     BX = handle
  302.     CX = in buffer length
  303.     DS:SI -> in buffer
  304.     DX = out buffer length
  305.     ES:DI -> out buffer
  306. Return: CF clear if successful
  307.         CX = bytes read
  308.     CF set on error
  309.         AX = error code
  310. Note:    this function was introduced by LAN Manager but is also supported by
  311.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  312.       Machines, and others
  313. SeeAlso: AX=5F34h,AX=5F37h
  314. --------N-215F37-----------------------------
  315. INT 21 u - Named Pipes - DosCallNmPipe
  316.     AX = 5F37h
  317.     DS:SI -> DosCallNmPipe stack frame (see #1044)
  318. Return: CF clear if successful
  319.         CX = bytes read
  320.     CF set on error
  321.         AX = error code
  322. Note:    this function was introduced by LAN Manager but is also supported by
  323.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  324.       Machines, and others
  325. SeeAlso: AX=5F36h,AX=5F38h
  326.  
  327. Format of Named Pipes DosCallNmPipe stack frame:
  328. Offset    Size    Description    (Table 1044)
  329.  00h    DWORD    timeout
  330.  04h    DWORD    -> bytes read WORD (not used!)
  331.  08h    WORD    out buffer length
  332.  0Ah    DWORD    address of out buffer
  333.  0Eh    WORD    in buffer length
  334.  10h    DWORD    address of in buffer
  335.  14h    DWORD    address of pipe name
  336. --------N-215F38-----------------------------
  337. INT 21 u - Named Pipes - LOCAL DosWaitNmPipe - AWAIT AVAIL. OF PIPE INSTANCE
  338.     AX = 5F38h
  339.     DS:DX -> pipe name
  340.     BX:CX = timeout value
  341. Return: CF clear if successful
  342.     CF set if error
  343.         AX = error code
  344. Notes:    when a client gets a return code of ERROR_PIPE_BUSY on attempting to
  345.       open a pipe, it should issue this call to wait until the pipe
  346.       instance becomes available again; on return from this call, the
  347.       client must attempt to open the pipe once again
  348.     this function was introduced by LAN Manager but is also supported by
  349.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  350.       Machines, and others
  351. SeeAlso: AX=5F37h,AX=5F39h
  352. --------N-215F39-----------------------------
  353. INT 21 U - Named Pipes - LOCAL DosRawReadNmPipe
  354.     AX = 5F39h
  355.     BX = handle
  356.     CX = buffer length
  357.     DS:DX -> buffer
  358. Return: CF clear if successful
  359.         CX = bytes read
  360.     CF set if error
  361.         AX = error code
  362. Notes:    this function was introduced by LAN Manager but is also supported by
  363.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  364.       Machines, and others
  365.     not documented in the LAN Manager Toolkit
  366. SeeAlso: AX=5F35h,AX=5F3Ah,INT 2F/AX=1186h
  367. --------N-215F3A-----------------------------
  368. INT 21 U - Named Pipes - LOCAL DosRawWriteNmPipe
  369.     AX = 5F3Ah
  370.     BX = handle
  371.     CX = buffer length
  372.     DS:DX -> buffer
  373. Return: CF clear if successful
  374.         CX = bytes written
  375.     CF set if error
  376.         AX = error code
  377. Notes:    this function was introduced by LAN Manager but is also supported by
  378.       the Novell DOS Named Pipe Extender, Banyan VINES, OS/2 Virtual DOS
  379.       Machines, and others
  380.     not documented in the LAN Manager Toolkit
  381. SeeAlso: AX=5F39h,AX=5F3Bh,INT 2F/AX=118Fh
  382. --------N-215F3B-----------------------------
  383. INT 21 u - LAN Manager Enhanced DOS - NetHandleSetInfo
  384.     AX = 5F3Bh
  385.     BX = handle
  386.     CX = handle_info_1 structure length or sizeof DWORD
  387.     DI = parameter number to set
  388.         0000h all
  389.         0001h number of milliseconds
  390.         0002h number of characters
  391.     DS:DX -> handle_info_1 structure (DI=0000h) (see #1045)
  392.         or DWORD (DI=0001h or 0002h)
  393.     SI = level of information (0001h)
  394. Return: CF clear if successful
  395.         CX = total bytes available
  396.     CF set if error
  397.         AX = error code
  398. SeeAlso: AX=5F3Ch
  399.  
  400. Format of LAN Manager handle_info_1 structure:
  401. Offset    Size    Description    (Table 1045)
  402.  00h    DWORD    number of milliseconds which workstation collects data before
  403.           it sends the data to the named pipe
  404.  04h    DWORD    number of characters which workstation collects before it
  405.           sends the data to the named pipe
  406. --------N-215F3C-----------------------------
  407. INT 21 u - LAN Manager Enhanced DOS - NetHandleGetInfo
  408.     AX = 5F3Ch
  409.     BX = handle
  410.     CX = length of handle_info_1 structure
  411.     DS:DX -> handle_info_1 structure (see #1045)
  412.     SI = level of information (must be 0001h)
  413. Return: CF clear if successful
  414.         CX = total bytes available
  415.     CF set if error
  416.         AX = error code
  417. SeeAlso: AX=5F3Bh
  418. --------N-215F3D-----------------------------
  419. INT 21 U - LAN Manager Enhanced DOS - WRITE MAILSLOT???
  420.     AX = 5F3Dh
  421.     ???
  422. Return: ???
  423. --------N-215F3E-----------------------------
  424. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetSpecialSMB
  425.     AX = 5F3Eh
  426.     ???
  427. Return: ???
  428. Note:    This function is not documented anywhere in the LAN Manager 2.x Toolkit
  429.       but was documented in LAN Manager 1.x manuals.
  430. --------N-215F3F-----------------------------
  431. INT 21 U - LAN Manager Enhanced DOS - REMOTE API CALL
  432.     AX = 5F3Fh
  433.     CX = api number
  434.     ES:DI -> data descriptor
  435.     ES:SI -> parameter descriptor
  436.     ES:DX -> auxiliary descriptor (if DX <> 0)
  437.     ???
  438. Return: ???
  439. --------N-215F40-----------------------------
  440. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetMessageBufferSend
  441.     AX = 5F40h
  442.     DS:DX -> NetMessageBufferSend parameter structure (see #1046)
  443. Return: AX = error code
  444.  
  445. Format of LAN Manager NetMessageBufferSend parameter structure:
  446. Offset    Size    Description    (Table 1046)
  447.  00h    DWORD    -> recipient name (name for specific user, name* for domain
  448.               wide name, * for broadcast)
  449.  04h    DWORD    -> buffer
  450.  08h    WORD    length of buffer
  451. --------N-215F41-----------------------------
  452. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceEnum
  453.     AX = 5F41h
  454.     BL = level of detail (0000h, 0001h or 0002h)
  455.     CX = buffer length
  456.     ES:DI -> buffer of service_info_0, service_info_1, or service_info_2
  457.         (see #1047,#1048,#1049)
  458. Return: CF clear if successful
  459.         CX = entries read
  460.         DX = total available
  461.     CF set on error
  462.         AX = error code
  463.  
  464. Format of LAN Manager service_info_0 structure:
  465. Offset    Size    Description    (Table 1047)
  466.  00h 16 BYTEs    name
  467. SeeAlso: #1048,#1049
  468.  
  469. Format of service_info_1 structure:
  470. Offset    Size    Description    (Table 1048)
  471.  00h 16 BYTEs    name
  472.  10h    WORD    status bitmask (see #1050)
  473.  12h    DWORD    status code (see #1051)
  474.         (also see Microsoft LAN Manager Programmer's Reference)
  475.  16h    WORD    process id
  476. SeeAlso: #1047,#1049
  477.  
  478. Format of service_info_2 structure:
  479. Offset    Size    Description    (Table 1049)
  480.  00h 16 BYTEs    name
  481.  10h    WORD    status bitmask (see #1050)
  482.  12h    DWORD    status code (see #1051)
  483.  16h    WORD    process id
  484.  18h 64 BYTEs    text
  485. SeeAlso: #1047,#1048
  486.  
  487. Bitfields for LAN Manager status bitmask:
  488. Bit(s)    Description    (Table 1050)
  489.  0,1    00 uninstall
  490.         01 install pending
  491.         10 uninstall pending
  492.         11 installed
  493.  2,3    00 active
  494.         01 Continue pending
  495.         10 Pause pending
  496.         11 paused
  497.  4    uninstallable
  498.  5    pausable
  499.  8    disk redirector paused
  500.  9    spooled device redirector paused (printing)
  501.  10    communication device redirector paused
  502.  
  503. (Table 1051)
  504. Values for LAN Manager status code:
  505.  high word
  506.     3051 Bad parameter value
  507.     3052 A parameter is missing
  508.     3053 An unknown parameter was specified
  509.     3054 The resource is insufficient
  510.     3055 Configuration is faulty
  511.     3056 An MS-DOS or MS OS/2 error occured
  512.     3057 An internal error occured
  513.     3058 An ambiguous parameter name was given
  514.     3059 A duplicate parameter exists
  515.     3060 The service was terminated by NetSeviceControl when it did not respond
  516.     3061 The service program file could not be executed
  517.     3062 The subservice failed to start
  518.     3063 There is a conflict in the value or use of these parameters
  519.     3064 There is a problem with the file
  520.  low word
  521.     3070 There is insufficient memory
  522.     3071 There is insufficeient disk space
  523.     3072 Unable to create thread
  524.     3073 Unable to create process
  525.     3074 A security failure occured
  526.     3075 There is bad or missing default path
  527.     3076 Network software is not installed
  528.     3077 Server software is not installed
  529.     3078 The server could not access the UAS database
  530.     3079 The action requires user-level security
  531.     3080 The log directory is invalid
  532.     3081 The LAN group specificed could not be used
  533.     3082 The computername is being used as a message alias on another computer
  534.     3083 The workstation failed to announce the servername
  535.     3084 The user accounts system is not configured properly
  536. --------N-215F42-----------------------------
  537. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServiceControl
  538.     AX = 5F42h
  539.     DH = opcode
  540.         00h interrogate status
  541.         01h pause
  542.         02h continue
  543.         03h uninstall
  544.     DL = argument
  545.         01h disk resource
  546.         02h print resource
  547.         04h communications resource (not implemented for DOS)
  548.     ES:BX -> NetServiceControl parameter structure (see #1052)
  549. Return: CF clear if successful
  550.     CF set on error
  551.         AX = error code
  552.  
  553. Format of LAN Manager NetServiceControl parameter structure:
  554. Offset    Size    Description    (Table 1052)
  555.  00h    DWORD    -> service name
  556.  04h    WORD    result buffer size
  557.  06h    DWORD    -> result buffer as service_info_2 structure
  558. --------N-215F43-----------------------------
  559. INT 21 u - LAN Manager Enhanced DOS - LOCAL DosPrintJobGetId
  560.     AX = 5F43h
  561.     BX = handle of remote print job
  562.     CX = size of PRIDINFO struture
  563.     ES:DI -> PRIDINFO structure (see #1053)
  564. Return: CF clear if successful
  565.         PRIDINFO filled in
  566.     CF set on error
  567.         AX = error code
  568.  
  569. Format of LAN Manager PRIDINFO structure:
  570. Offset    Size    Description    (Table 1053)
  571.  00h    WORD    job id
  572.  02h 16 BYTEs    server name
  573.  12h 13 BYTEs    queue name
  574.  1Fh  1 BYTE    pad
  575. --------N-215F44-----------------------------
  576. INT 21 - LAN Manager Enhanced DOS - LOCAL NetWkstaGetInfo
  577.     AX = 5F44h
  578.     BX = information level (00h, 01h, or 0Ah)
  579.     CX = buffer size
  580.     DX = 0000h
  581.     ES:DI -> buffer in which to store info (see #1054,#1055,#1056),
  582.           including any returned strings
  583. Return: AX = error code
  584.     DX = amount of buffer required, unchanged if supplied buffer large
  585.           enough to hold data
  586. SeeAlso: AX=5F45h,AX=5F49h
  587.  
  588. Format of LAN Manager wksta_info_0 structure:
  589. Offset    Size    Description    (Table 1054)
  590.  00h    WORD     reserved (0)
  591.  02h    DWORD     reserved (0)
  592.  06h    DWORD     -> path to computer's LANMAN directory
  593.  0Ah    DWORD     -> computername of the workstation
  594.  0Eh    DWORD     -> username of user logged onto workstation
  595.  12h    DWORD     -> domain to which workstation belongs
  596.  16h    WORD     LAN Manager version number (2 bytes, Major, Minor)
  597.  18h    DWORD     reserved (0)
  598.  1Ch    WORD     number of seconds workstation waits for resource availability
  599.  1Eh    DWORD     delay (in millsecs) before sending data to resource
  600.  22h    WORD     reserved (0)
  601.  24h    WORD     reserved (0)
  602.  26h    WORD     ???
  603.  28h    WORD     number of seconds to maintain an inactive connection
  604.  2Ah    WORD     number of seconds an inactive search continues
  605.  2Ch    WORD     threads to dedicate to network (not supported in MSDOS)
  606.  2Eh    WORD     number of simultaneous commands sent to network
  607.  30h    WORD     reserved6 (must be 0)
  608.  32h    WORD     number of internal buffers
  609.  34h    WORD     size (in bytes) of each internal buffer
  610.  36h    WORD     max size (in bytes) of an internal cache buffer (not MSDOS)
  611.  38h    WORD     seconds before disconnecting inactive session (not MSDOS)
  612.  3Ah    WORD     size (in bytes) of an internal error buffer (not MSDOS)
  613.  3Ch    WORD     number of clients that can receive alert messages (not MSDOS)
  614.  3Eh    WORD     number of services that can be started on workstation
  615.  40h    WORD     max size (in kilobytes) of error log (not MSDOS)
  616.  42h    WORD     number of secs before closing inactive print jobs (not MSDOS)
  617.  44h    WORD     number of character buffers for workstation
  618.  46h    WORD     max size (in bytes) of character buffer
  619.  48h    DWORD     -> name of server that validated logon
  620.  4Ch    DWORD     -> workstation heuristics
  621.  50h    WORD     number of mailslots allowed
  622. Note:    pointers to strings are set to 0000h:0000h if there is insufficient
  623.       space in the buffer to hold them
  624. SeeAlso: #1055,#1056
  625.  
  626. Format of LAN Manager wksta_info_1 structure:
  627. Offset    Size    Description    (Table 1055)
  628.  00h 82 BYTEs    wksta_info_0 structure (see #1054)
  629.  52h    DWORD     -> name of domain which user is logged on to
  630.  56h    DWORD     -> all domains in which computer is enlisted
  631.  5Ah    WORD     number of buffers to allocate for receiving datagrams
  632. SeeAlso: #1056
  633.  
  634. Format of LAN Manager wksta_info_10 structure:
  635. Offset    Size    Description    (Table 1056)
  636.  00h    DWORD     -> computername of the workstation
  637.  04h    DWORD     -> username of user logged onto workstation
  638.  08h    DWORD     -> domain to which workstation belongs
  639.  0Ch    WORD     LAN Manager version number (2 bytes, Major, Minor)
  640.  0Eh    DWORD     -> name of domain which user is loggod on to
  641.  12h    DWORD     -> all domains in which computer is enlisted
  642. Note:    pointers to strings are set to 0000h:0000h if there is insufficient
  643.       space in the buffer to hold them
  644. SeeAlso: #1054,#1055
  645. --------N-215F45-----------------------------
  646. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetWkstaSetInfo
  647.     AX = 5F45h
  648.     BX = level (0000h or 0001h)
  649.     CX = buffer size
  650.     DX = parameter to set
  651.     ES:DI -> buffer
  652. Return: CF clear if successful
  653.     CF set if error
  654.         AX = error code
  655. SeeAlso: AX=5F44h
  656. --------N-215F46-----------------------------
  657. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseEnum
  658.     AX = 5F46h
  659.     BX = level (0000h or 0001h)
  660.     CX = size of buffer
  661.     ES:DI -> buffer of use_info_0 or use_info_1 structures
  662.           (see #1057,#1058)
  663. Return: CF clear if successful
  664.         CX = entries read
  665.         DX = total available entries
  666.     CF set if error
  667.         AX = error code
  668. SeeAlso: AX=5F47h,AX=5F48h,AX=5F4Ch
  669.  
  670. Format of LAN Manager use_info_0 structure:
  671. Offset    Size    Description    (Table 1057)
  672.  00h  9 BYTEs    local device name
  673.  09h    BYTE    padding
  674.  0Ah    DWORD    -> remote device name in UNC form \\server\share
  675. SeeAlso: #1058
  676.  
  677. Format of LAN Manager use_info_1 structure:
  678. Offset    Size    Description    (Table 1058)
  679.  00h  9 BYTEs    Local device name
  680.  09h    BYTE    padding
  681.  0Ah    DWORD    -> remote device name in UNC form \\server\share
  682.  0Eh    DWORD    -> password
  683.  12h    WORD    network link status
  684.         (00h OK, 02h disconnected, else unsure)
  685.  14h    WORD    use type (-1 wildcard, 0 disk, 1 print, 2 com, 3 ipc)
  686.  16h    WORD    ignored
  687.  18h    WORD    ignored
  688. SeeAlso: #1057
  689. --------N-215F47-----------------------------
  690. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseAdd
  691.     AX = 5F47h
  692.     BX = level (0001h)
  693.     CX = size of use_info_1 structure
  694.     ES:DI -> use_info_1 structure (see #1058)
  695. Return: CF clear on success
  696.     CF set on error
  697.         AX = error code
  698. SeeAlso: AX=5F46h,AX=5F48h
  699. --------N-215F48-----------------------------
  700. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetUseDel
  701.     AX = 5F48h
  702.     BX = force level
  703.         0000h no force
  704.         0001h force
  705.         0002h lots of force
  706.     ES:DI -> buffer as either the local device name or UNC remote name
  707. Return: CF clear on success
  708.     CF set on error
  709.         AX = error code
  710. SeeAlso: AX=5F46h,AX=5F48h,AX=5F49h
  711. --------N-215F49-----------------------------
  712. INT 21 u - LAN Manager Enhanced DOS - NetUseGetInfo
  713.     AX = 5F49h
  714.     DS:DX -> NetUseGetInfo parameter structure (see #1059)
  715. Return: CF clear on success
  716.         DX = total available
  717.     CF set on error
  718.         AX = error code
  719. SeeAlso: AX=5F44h,AX=5F47h
  720.  
  721. Format of LAN Manager NetUseGetInfo parameter structure:
  722. Offset    Size    Description    (Table 1059)
  723.  00h    DWORD    pointer to either the local device name or UNC remote name
  724.  04h    WORD    level of information (0000h or 0001h)
  725.  06h    DWORD    pointer to buffer of use_info_0 or use_info_1 structures
  726.  0Ah    WORD    length of buffer
  727. --------N-215F4A-----------------------------
  728. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteCopy
  729.     AX = 5F4Ah
  730.     DS:DX -> NetRemoteCopy parameter structure (see #1060)
  731. Return: CF clear if successful
  732.     CF set on error
  733.         AX = error code
  734. SeeAlso: AX=5F4Bh
  735.  
  736. Format of LAN Manager NetRemoteCopy parameter structure:
  737. Offset    Size    Description    (Table 1060)
  738.  00h    DWORD    -> source name as UNC
  739.  04h    DWORD    -> destination name as UNC
  740.  08h    DWORD    -> source password
  741.  0Ch    DWORD    -> destination password
  742.  10h    WORD    destination open bitmap
  743.         if destination path exists
  744.             0000h open fails
  745.             0001h file is appended
  746.             0002h file is overwritten
  747.         if destination path doesn't exist
  748.             0000h open fails
  749.             0010h file is created
  750.  12h    WORD    copy control bitmap (see #1061)
  751.  14h    DWORD    -> copy_info buffer
  752.  18h    WORD    length of copy_info buffer
  753.  
  754. Bitfields for LAN Manager copy control:
  755. Bit(s)    Description    (Table 1061)
  756.  0    destination must be a file
  757.  1    destination must be a directory
  758.  2    destination is opened in ascii mode instead of binary
  759.  3    source is opened in ascii mode instead of binary
  760.  4    verify all write operations
  761. --------N-215F4B-----------------------------
  762. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetRemoteMove
  763.     AX = 5F4Bh
  764.     DS:DX -> NetRemoteMove parameter structure (see #1062)
  765. Return: CF clear if successful
  766.     CF set on error
  767.         AX = error code
  768. SeeAlso: AX=5F4Ah
  769.  
  770. Format of LAN Manager NetRemoteMove parameter structure:
  771. Offset    Size    Description    (Table 1062)
  772.  00h    DWORD    -> source name as UNC
  773.  04h    DWORD    -> destination name as UNC
  774.  08h    DWORD    -> source password
  775.  0Ch    DWORD    -> destination password
  776.  10h    WORD    destination open bitmap
  777.         if destination path exists
  778.             0000h open fails
  779.             0001h file is appended
  780.             0002h file is overwritten
  781.         if destination path doesn't exist
  782.             0000h open fails
  783.             0010h file is created
  784.  12h    WORD    move control bitmap
  785.             0001h destination must be a file
  786.             0002h destination must be a directory
  787.  14h    DWORD    -> move_info buffer
  788.  18h    WORD    length of move_info buffer
  789. --------N-215F4C-----------------------------
  790. INT 21 u - LAN Manager Enhanced DOS - LOCAL NetServerEnum
  791.     AX = 5F4Ch
  792.     BX = level (0000h or 0001h)
  793.     CX = buffer length
  794.     ES:DI -> buffer in which to store information
  795. Return: CF clear if successful
  796.         ES:DI -> server_info_X structures (depending on level)
  797.           (see #1063,#1064)
  798.         BX = entries read
  799.         CX = total entries available
  800.     CF set on error
  801.         AX = error code
  802. Notes:    this function is also supported by the Novell DOS Named Pipe Extender
  803.     this function has been obseleted by NetServerEnum2
  804. SeeAlso: AX=5F53h
  805.  
  806. Format of LAN Manager server_info_0 structure:
  807. Offset    Size    Description    (Table 1063)
  808.  00h 16 BYTEs    name
  809. SeeAlso: #1064
  810.  
  811. Format of LAN Manager server_info_1 structure:
  812. Offset    Size    Description    (Table 1064)
  813.  00h 16 BYTEs    name
  814.  10h    BYTE    major version in lower nibble
  815.  11h    BYTE    minor version
  816.  12h    DWORD    server type bitmask (see #1065)
  817.  16h    DWORD    -> comment string
  818. SeeAlso: #1063
  819.  
  820. Bitfields for LAN Manager server type:
  821. Bit(s)    Description    (Table 1065)
  822.  0    workstation
  823.  1    server
  824.  2    SQL server
  825.  3    primary domain controller
  826.  4    backup domain controller
  827.  5    time server
  828.  6    Apple File Protocol (AFP) server
  829.  7    Novell server
  830.  8    Domain Member (v2.1+)
  831.  9    Print Queue server (v2.1+)
  832.  10    Dialin server (v2.1+)
  833.  11    Unix server (v2.1+)
  834. --------N-215F4D-----------------------------
  835. INT 21 u - LAN Manager Enhanced DOS - DosMakeMailslot
  836.     AX = 5F4Dh
  837.     BX = message size
  838.     CX = mailslot size (must be bigger than message size by at least 1)
  839.                (minimum 1000h, maximum FFF6h)
  840.                (buffer must be 9 bytes bigger than this)
  841.     DS:SI -> name
  842.     ES:DI -> memory buffer
  843. Return: CF clear if successful
  844.         AX = handle
  845.     CF set on error
  846.         AX = error code
  847. SeeAlso: AX=5F4Eh,AX=5F4Fh,AX=5F50h,AX=5F51h
  848. --------N-215F4E-----------------------------
  849. INT 21 u - LAN Manager Enhanced DOS - DosDeleteMailslot
  850.     AX = 5F4Eh
  851.     BX = handle
  852. Return: CF clear if successful
  853.         ES:DI -> memory to be freed (allocated during DosMakeMailslot)
  854.     CF set on error
  855.         AX = error code
  856. SeeAlso: AX=5F4Dh,AX=5F4Fh
  857. --------N-215F4F-----------------------------
  858. INT 21 u - LAN Manager Enhanced DOS - DosMailslotInfo
  859.     AX = 5F4Fh
  860.     BX = handle
  861. Return: CF clear if successful
  862.         AX = max message size
  863.         BX = mailslot size
  864.         CX = next message size
  865.         DX = next message priority
  866.         SI = number of messages waiting
  867.     CF set on error
  868.         AX = error code
  869. SeeAlso: AX=5F4Dh,AX=5F4Eh,AX=5F50h
  870. --------N-215F50-----------------------------
  871. INT 21 u - LAN Manager Enhanced DOS - DosReadMailslot
  872.     AX = 5F50h
  873.     BX = handle
  874.     DX:CX = timeout
  875.     ES:DI -> buffer
  876. Return: CF clear if successful
  877.         AX = bytes read
  878.         CX = next item's size
  879.         DX = next item's priority
  880.     CF set on error
  881.         AX = error code
  882. SeeAlso: AX=5F4Dh,AX=5F4Fh,AX=5F51h,AX=5F52h
  883. --------N-215F51-----------------------------
  884. INT 21 u - LAN Manager Enhanced DOS - DosPeekMailslot
  885.     AX = 5F51h
  886.     BX = handle
  887.     ES:DI -> buffer
  888. Return: CF clear if successful
  889.         AX = bytes read
  890.         CX = next item's size
  891.         DX = next item's priority
  892.     CF set on error
  893.         AX = error code
  894. SeeAlso: AX=5F35h,AX=5F4Fh,AX=5F50h,AX=5F52h
  895. --------N-215F52-----------------------------
  896. INT 21 u - LAN Manager Enhanced DOS - DosWriteMailslot
  897.     AX = 5F52h
  898.     BX = class
  899.     CX = length of buffer
  900.     DX = priority
  901.     ES:DI -> DosWriteMailslot parameter structure (see #1066)
  902.     DS:SI -> mailslot name
  903. Return: CF clear if successful
  904.     CF set on error
  905.         AX = error code
  906. SeeAlso: AX=5F4Fh,AX=5F50h,AX=5F51h
  907.  
  908. Format of LAN Manager DosWriteMailslot parameter structure:
  909. Offset    Size    Description    (Table 1066)
  910.  00h    DWORD    timeout
  911.  04h    DWORD    -> buffer
  912. --------N-215F53-----------------------------
  913. INT 21 u - LAN Manager Enhanced DOS - NetServerEnum2
  914.     AX = 5F53h
  915.     DS:SI -> NetServerEnum2 parameter structure (see #1067)
  916. Return: CF clear if successful
  917.         BX = entries read
  918.         CX = total entries available
  919.     CF set on error
  920.         AX = error code
  921. SeeAlso: AX=5F4Ch
  922.  
  923. Format of LAN Manager NetServerEnum2 parameter structure:
  924. Offset    Size    Description    (Table 1067)
  925.  00h    WORD    level (0000h or 0001h)
  926.  02h    DWORD    -> buffer as array of server_info_??? structures (see #1069)
  927.  06h    WORD    length of buffer
  928.  08h    DWORD    server type bitmask (see #1068)
  929.  0Ch    DWORD    -> Domain name (may be 0000h:0000h for all local domains)
  930.  
  931. Bitfields for LAN Manager server type:
  932. Bit(s)    Description    (Table 1068)
  933.  0    workstation
  934.  1    server
  935.  2    SQL server
  936.  3    primary domain controller
  937.  4    backup domain controller
  938.  5    time server
  939.  6    Apple File Protocol (AFP) server
  940.  7    Novell server
  941.  8    Domain Member (v2.1+)
  942.  9    Print Queue server (v2.1+)
  943.  10    Dialin server (v2.1+)
  944.  11    Unix server (v2.1+)
  945. Note:    set all (FFFFFFFFh) for All Types
  946.  
  947. Format of LAN Manager server_info_0 structure:
  948. Offset    Size    Description    (Table 1069)
  949.  00h 16 BYTEs    name
  950. SeeAlso: #1070
  951.  
  952. Format of LAN Manager server_info_1 structure:
  953. Offset    Size    Description    (Table 1070)
  954.  00h 16 BYTEs    name
  955.  10h    BYTE    major version in lower nibble
  956.  11h    BYTE    minor version
  957.  12h    DWORD    server type (bits 0-11) (see #1068)
  958.  16h    DWORD    -> comment string
  959. SeeAlso: #1069
  960. --------N-215F55----------------------------
  961. INT 21 U - LAN Manager Enhanced DOS - KILL ALL CONNECTIONS???
  962.     AX = 5F55h
  963.     BX = ???
  964. Return: CF clear if successful
  965.     CF set on error
  966.         AX = error code
  967. --------N-215F80-----------------------------
  968. INT 21 - LANtastic - GET LOGIN ENTRY
  969.     AX = 5F80h
  970.     BX = login entry index (0-based)
  971.     ES:DI -> 16-byte buffer for machine name
  972. Return: CF clear if successful
  973.         buffer filled with machine name ("\\" prefix removed)
  974.         DL = adapter number (v3+)
  975.     CF set on error
  976.         AX = error code
  977. Note:    the login entry index corresponds to the value BX used in AX=5F83h
  978. SeeAlso: AX=5F83h
  979. --------N-215F81-----------------------------
  980. INT 21 - LANtastic - LOGIN TO SERVER
  981.     AX = 5F81h
  982.     ES:DI -> ASCIZ login path followed immediately by ASCIZ password
  983.     BL = adapter number
  984.         FFh try all valid adapters
  985.         00h-07h try only specified adapter
  986. Return: CF clear if successful
  987.     CF set on error
  988.         AX = error code
  989. Notes:    login path is of form "\\machine\username"
  990.     if no password is used, the string at ES:DI must be terminated with
  991.       three NULs for compatibility with LANtastic v3.0.
  992. SeeAlso: AX=5F82h,AX=5F84h
  993. --------N-215F82-----------------------------
  994. INT 21 - LANtastic - LOGOUT FROM SERVER
  995.     AX = 5F82h
  996.     ES:DI -> ASCIZ server name (in form "\\machine")
  997. Return: CF clear if successful
  998.     CF set on error
  999.         AX = error code
  1000. SeeAlso: AX=5F81h,AX=5F88h,AX=5FCBh
  1001. --------N-215F83-----------------------------
  1002. INT 21 - LANtastic - GET USERNAME ENTRY
  1003.     AX = 5F83h
  1004.     BX = login entry index (0-based)
  1005.     ES:DI -> 16-byte buffer for username currently logged into
  1006. Return: CF clear if successful
  1007.         DL = adapter number (v3+)
  1008.     CF set on error
  1009.         AX = error code
  1010. Note:    the login entry index corresponds to the value BX used in AX=5F80h
  1011. SeeAlso: AX=5F80h
  1012. --------N-215F84-----------------------------
  1013. INT 21 - LANtastic - GET INACTIVE SERVER ENTRY
  1014.     AX = 5F84h
  1015.     BX = server index not currently logged into
  1016.     ES:DI -> 16-byte buffer for server name which is available for logging
  1017.         in to ("\\" prefix omitted)
  1018. Return: CF clear if successful
  1019.         DL = adapter number to non-logged in server is on
  1020.     CF set on error
  1021.         AX = error code
  1022. SeeAlso: AX=5F81h
  1023. --------N-215F85-----------------------------
  1024. INT 21 - LANtastic - CHANGE PASSWORD
  1025.     AX = 5F85h
  1026.     ES:DI -> buffer containing "\\machine\oldpassword" 00h "newpassword"00h
  1027. Return: CF clear if successful
  1028.     CF set on error
  1029.         AX = error code
  1030. Notes:    must be logged into the named machine
  1031.     this function is illegal for group accounts
  1032. --------N-215F86-----------------------------
  1033. INT 21 - LANtastic - DISABLE ACCOUNT
  1034.     AX = 5F86h
  1035.     ES:DI -> ASCIZ machine name and password in form "\\machine\password"
  1036. Return: CF clear if successful
  1037.     CF set on error
  1038.         AX = error code
  1039. Note:    must be logged into the named machine and concurrent logins set to 1
  1040.       by NET_MGR.  Requires system manager to re-enable account.
  1041. --------N-215F87-----------------------------
  1042. INT 21 - LANtastic v3+ - GET ACCOUNT
  1043.     AX = 5F87h
  1044.     DS:SI -> 128-byte buffer for account information (see #1071)
  1045.     ES:DI -> ASCIZ machine name in form "\\machine"
  1046. Return: CF clear if successful
  1047.     CF set on error
  1048.         AX = error code
  1049.     BX destroyed
  1050. Note:    must be logged into the specified machine
  1051.  
  1052. Format of LANtastic user account structure:
  1053. Offset    Size    Description    (Table 1071)
  1054.  00h 16 BYTEs    blank-padded username (zero-padded for v4.x)
  1055.  10h 16 BYTEs    reserved (00h)
  1056.  20h 32 BYTEs    user description
  1057.  40h    BYTE    privilege bits (see #1072)
  1058.  41h    BYTE    maximum concurrent users
  1059.  42h 42 BYTEs    bit map for disallowed half hours, beginning on Sunday
  1060.         (bit set if half-hour not an allowed time)
  1061.  6Ch    WORD    internal (0002h)
  1062.  6Eh  2 WORDs    last login time
  1063.  72h  2 WORDs    account expiration date (MS-DOS-format year/month:day)
  1064.  76h  2 WORDs    password expiration date (0 = none)
  1065.  7Ah    BYTE    number of days to extend password after change (1-31)
  1066.         00h if no extension required
  1067. ---v3.x---
  1068.  7Bh  5 BYTEs    reserved
  1069. ---v4.x---
  1070.  7Bh    BYTE    storage for first letter of user name when deleted (first
  1071.           character is changed to 00h when deleting account)
  1072.  7Ch    BYTE    extended privileges
  1073.  7Dh  3 BYTEs    reserved
  1074.  
  1075. Bitfields for LANtastic privilege bits:
  1076. Bit(s)    Description    (Table 1072)
  1077.  7    bypass access control lists
  1078.  6    bypass queue protection
  1079.  5    treat as local process
  1080.  4    bypass mail protection
  1081.  3    allow audit entry creation
  1082.  2    system manager
  1083.  0    user cannot change password
  1084. --------N-215F88-----------------------------
  1085. INT 21 - LANtastic v4.0+ - LOGOUT FROM ALL SERVERS
  1086.     AX = 5F88h
  1087. Return: CF clear if successful
  1088.     CF set on error
  1089.         AX = error code
  1090. SeeAlso: AX=5F82h
  1091. --------N-215F97-----------------------------
  1092. INT 21 - LANtastic - COPY FILE
  1093.     AX = 5F97h
  1094.     CX:DX = number of bytes to copy (FFFFFFFFh = entire file)
  1095.     SI = source file handle
  1096.     DI = destination file handle
  1097. Return: CF clear if successful
  1098.         DX:AX = number of bytes copied
  1099.     CF set on error
  1100.         AX = error code
  1101. Note:    copy is performed by server
  1102. --------N-215F98-----------------------------
  1103. INT 21 - LANtastic - SEND UNSOLICITED MESSAGE
  1104.     AX = 5F98h
  1105.     DS:SI -> message buffer (see #1073)
  1106. Return: CF clear if successful
  1107.     CF set on error
  1108.         AX = error code
  1109. Note:    v4.1- return no errors
  1110. SeeAlso: AX=5F99h
  1111.  
  1112. Format of LANtastic message buffer:
  1113. Offset    Size    Description    (Table 1073)
  1114.  00h    BYTE    reserved
  1115.  01h    BYTE    message type
  1116.         00h general
  1117.         01h server warning
  1118.         02h-7Fh reserved
  1119.         80h-FFh user-defined
  1120.  02h 16 BYTEs    ASCIZ destination machine name
  1121.  12h 16 BYTEs    ASCIZ server name which user must be logged into
  1122.  22h 16 BYTEs    ASCIZ user name
  1123.  32h 16 BYTEs    ASCIZ originating machine name (filled in when received)
  1124.  42h 80 BYTEs    message text
  1125. --------N-215F99-----------------------------
  1126. INT 21 - LANtastic - GET LAST RECEIVED UNSOLICITED MESSAGE
  1127.     AX = 5F99h
  1128.     ES:DI -> messsage buffer (see #1073)
  1129. Return: CF clear if successful
  1130.     CF set on error
  1131.         AX = error code
  1132. SeeAlso: AX=5F98h
  1133. --------N-215F9A-----------------------------
  1134. INT 21 - LANtastic - GET MESSAGE PROCESSING FLAGS
  1135.     AX = 5F9Ah
  1136. Return: CF clear if successful
  1137.         DL = bits describing processing of received messages (see #1074)
  1138.     CF set on error
  1139.         AX = error code
  1140. SeeAlso: AX=5F9Bh,AX=5F9Ch,AX=5F9Dh
  1141.  
  1142. Bitfields for unsolicited message processing flags:
  1143. Bit(s)    Description    (Table 1074)
  1144.  0    beep before message is delivered
  1145.  1    deliver message to message service
  1146.  2    pop up message automatically (v3+)
  1147. --------N-215F9B-----------------------------
  1148. INT 21 - LANtastic - SET MESSAGE PROCESSING FLAGS
  1149.     AX = 5F9Bh
  1150.     DL = bits describing processing for received unsolicited messages
  1151.          (see #1074)
  1152. Return: CF clear if successful
  1153.     CF set on error
  1154.         AX = error code
  1155. SeeAlso: AX=5F9Ah,AX=5F9Eh
  1156. --------N-215F9C-----------------------------
  1157. INT 21 - LANtastic v3+ - POP UP LAST RECEIVED MESSAGE
  1158.     AX = 5F9Ch
  1159.     CX = time to leave on screen in clock ticks
  1160.     DH = 0-based screen line on which to place message
  1161. Return: CF clear if successful
  1162.     CF set on error
  1163.         AX = error code (0Bh)
  1164. Notes:    the original screen contents are restored when the message is removed
  1165.     the message will not appear, and an error will be returned, if the
  1166.       screen is in a graphics mode
  1167. SeeAlso: AX=5F9Ah
  1168. --------N-215F9D-----------------------------
  1169. INT 21 - LANtastic v4.1+ - GET REDIRECTOR CONTROL BITS
  1170.     AX = 5F9Dh
  1171. Return: DL = redirector control bits
  1172.         bit 7: set to notify on print job completion
  1173. SeeAlso: AX=5F9Ah,AX=5F9Eh
  1174. --------N-215F9E-----------------------------
  1175. INT 21 - LANtastic v4.1+ - SET REDIRECTOR CONTROL BITS
  1176.     AX = 5F9Eh
  1177.     DL = redirector control bits (see AX=5F9Dh)
  1178. Return: nothing
  1179. SeeAlso: AX=5F9Bh,AX=5F9Dh
  1180. --------N-215FA0-----------------------------
  1181. INT 21 - LANtastic - GET QUEUE ENTRY
  1182.     AX = 5FA0h
  1183.     BX = queue entry index (0000h is first entry)
  1184.     DS:SI -> buffer for queue entry (see #1075)
  1185.     ES:DI -> ASCIZ server name in form "\\name"
  1186. Return: CF clear if successful
  1187.     CF set on error
  1188.         AX = error code
  1189.     BX = entry index for next queue entry (BX-1 is current index)
  1190. SeeAlso: AX=5FA1h,AX=5FA2h
  1191.  
  1192. Format of LANtastic queue entry:
  1193. Offset    Size    Description    (Table 1075)
  1194.  00h    BYTE    status of entry (see #1076)
  1195.  01h    DWORD    size of spooled file
  1196.  05h    BYTE    type of entry (see #1077)
  1197.  06h    BYTE    output control (see #1078)
  1198.  07h    WORD    number of copies
  1199.  09h    DWORD    sequence number of queue entry
  1200.  0Dh 48 BYTEs    pathname of spooled file
  1201.  3Dh 16 BYTEs    user who spooled file
  1202.  4Dh 16 BYTEs    name of machine from which file was spooled
  1203.  5Dh    WORD    date file was spooled (see #1006 at AX=5700h)
  1204.  5Fh    WORD    time file was spooled (see #1005 at AX=5700h)
  1205.  61h 17 BYTEs    ASCIZ destination device or user name
  1206.  72h 48 BYTEs    comment field
  1207.  
  1208. (Table 1076)
  1209. Values for status of LANtastic queue entry:
  1210.  00h    empty
  1211.  01h    being updated
  1212.  02h    being held
  1213.  03h    waiting for despool
  1214.  04h    being despooled
  1215.  05h    canceled
  1216.  06h    spooled file could not be accessed
  1217.  07h    destination could not be accessed
  1218.  08h    rush job
  1219.  
  1220. (Table 1077)
  1221. Values for type of LANtastic queue entry:
  1222.  00h    printer queue file
  1223.  01h    message
  1224.  02h    local file
  1225.  03h    remote file
  1226.  04h    to remote modem
  1227.  05h    batch processor file
  1228.  
  1229. Bitfields for output control:
  1230. Bit(s)    Description    (Table 1078)
  1231.  6    don't delete (for mail)
  1232.  5    mail file contains voice mail (v3+)
  1233.  4    mail message has been read
  1234.  3    response has been requested for this mail
  1235. --------N-215FA1-----------------------------
  1236. INT 21 - LANtastic - SET QUEUE ENTRY
  1237.     AX = 5FA1h
  1238.     BX = handle of opened queue entry
  1239.     DS:SI -> queue entry (see #1075)
  1240. Return: CF clear if successful
  1241.     CF set on error
  1242.         AX = error code
  1243. Notes:    the only queue entry fields which may be changed are output control,
  1244.       number of copies, destination device, and comment
  1245.     the handle in BX is that from a create or open (INT 21/AH=3Ch,3Dh)
  1246.       call on the file "\\server\\@MAIL" or "\\server\@name" (for
  1247.       printer queue entries)
  1248. SeeAlso: AX=5FA0h,AX=5FA2h,AX=5FA9h
  1249. --------N-215FA2-----------------------------
  1250. INT 21 - LANtastic - CONTROL QUEUE
  1251.     AX = 5FA2h
  1252.     BL = control command
  1253.         00h start despooling (privileged)
  1254.         01h halt despooling (privileged)
  1255.         02h halt despooling at end of job (privileged)
  1256.         03h pause despooler at end of job (privileged)
  1257.         04h print single job (privileged)
  1258.         05h restart current job (privileged)
  1259.         06h cancel the current job
  1260.         07h hold queue entry
  1261.         08h release a held queue entry
  1262.         09h make queue entry a rushed job (privileged)
  1263.     CX:DX = sequence number to control (commands 06h-09h)
  1264.     DX = physical printer number (commands 00h-05h)
  1265.         00h-02h LPT1-LPT3
  1266.         03h,04h COM1,COM2
  1267.         other    all printers
  1268.     ES:DI -> ASCIZ server name in form "\\machine"
  1269. Return: CF clear if successful
  1270.     CF set on error
  1271.         AX = error code
  1272. --------N-215FA3-----------------------------
  1273. INT 21 - LANtastic v3+ - GET PRINTER STATUS
  1274.     AX = 5FA3h
  1275.     BX = physical printer number (00h-02h = LPT1-LPT3, 03h-04h = COM1-COM2)
  1276.     DS:SI -> buffer for printer status (see #1079)
  1277.     ES:DI -> ASCIZ server name in form "\\machine"
  1278. Return: CF clear if successful
  1279.     CF set on error
  1280.         AX = error code
  1281.     BX = next physical printer number
  1282. Note:    you must be logged in to the specified server
  1283.  
  1284. Format of LANtastic printer status:
  1285. Offset    Size    Description    (Table 1079)
  1286.  00h    BYTE    printer state (see #1080)
  1287.  01h    WORD    queue index of print job being despooled
  1288.         FFFFh if not despooling--ignore all following fields
  1289.  03h    WORD    actual characters per second being output
  1290.  05h    DWORD    number of characters actually output so far
  1291.  09h    DWORD    number of bytes read from spooled file so far
  1292.  0Dh    WORD    copies remaining to print
  1293.  
  1294. Bitfields for LANtastic printer state:
  1295. Bit(s)    Description    (Table 1080)
  1296.  7    printer paused
  1297.  0-6    0 printer disabled
  1298.     1 will stop at end of job
  1299.     2 print multiple jobs
  1300. --------N-215FA4-----------------------------
  1301. INT 21 - LANtastic v3+ - GET STREAM INFO
  1302.     AX = 5FA4h
  1303.     BX = 0-based stream index number
  1304.     DS:SI -> buffer for stream information (see #1081)
  1305.     ES:DI -> ASCIZ machine name in form "\\machine"
  1306. Return: CF clear if successful
  1307.     CF set on error
  1308.         AX = error code
  1309.     BX = next stream number
  1310. SeeAlso: AX=5FA5h
  1311.  
  1312. Format of LANtastic stream information:
  1313. Offset    Size    Description    (Table 1081)
  1314.  00h    BYTE    queueing of jobs for logical printer (0=disabled,other=enabled)
  1315.  01h 11 BYTEs    logical printer resource template (may contain ? wildcards)
  1316. --------N-215FA5-----------------------------
  1317. INT 21 - LANtastic v3+ - SET STREAM INFO
  1318.     AX = 5FA5h
  1319.     BX = 0-based stream index number
  1320.     DS:SI -> buffer containing stream information (see #1081)
  1321.     ES:DI -> ASCIZ machine name in form "\\machine"
  1322. Return: CF clear if successful
  1323.     CF set on error
  1324.         AX = error code
  1325. SeeAlso: AX=5FA4h
  1326. --------N-215FA7-----------------------------
  1327. INT 21 - LANtastic - CREATE USER AUDIT ENTRY
  1328.     AX = 5FA7h
  1329.     DS:DX -> ASCIZ reason code (max 8 bytes)
  1330.     DS:SI -> ASCIZ variable reason string (max 128 bytes)
  1331.     ES:DI -> ASCIZ machine name in form "\\machine"
  1332. Return: CF clear if successful
  1333.     CF set on error
  1334.         AX = error code
  1335. Note:    you must be logged in to the specified server and have the "U"
  1336.       privilege to execute this call
  1337. --------N-215FA9-----------------------------
  1338. INT 21 - LANtastic v4.1+ - SET EXTENDED QUEUE ENTRY
  1339.     AX = 5FA9h
  1340.     BX = handle of opened queue entry
  1341.     DS:SI -> queue entry (see #1075)
  1342. Return: CF clear if successful
  1343.     CF set on error
  1344.         AX = error code
  1345. Note:    functions exactly the same as AX=5FA1h except the spooled filename is
  1346.       also set.  This call supports direct despooling.
  1347. SeeAlso: AX=5FA1h
  1348. --------N-215FB0-----------------------------
  1349. INT 21 - LANtastic - GET ACTIVE USER INFORMATION
  1350.     AX = 5FB0h
  1351.     BX = server login entry index
  1352.     DS:SI -> buffer for active user entry (see #1082)
  1353.     ES:DI -> ASCIZ machine name in form "\\server"
  1354. Return: CF clear if successful
  1355.     CF set on error
  1356.         AX = error code
  1357.     BX = next login index
  1358. SeeAlso: AX=5FB2h
  1359.  
  1360. Format of LANtastic active user entry:
  1361. Offset    Size    Description    (Table 1082)
  1362.  00h    WORD    virtual circuit number
  1363.  02h    BYTE    login state (see #1083)
  1364.  03h    BYTE    last command issued (see #1084)
  1365.  04h  5 BYTEs    number of I/O bytes (40-bit unsigned number)
  1366.  09h  3 BYTEs    number of server requests (24-bit unsigned)
  1367.  0Ch 16 BYTEs    name of user who is logged in
  1368.  1Ch 16 BYTEs    name of remote logged in machine
  1369.  2Ch    BYTE    extended privileges (v4+???)
  1370.         bit 0: user cannot change his password
  1371.  2Dh    WORD    time left in minutes (0000h = unlimited) (v4+???)
  1372.  
  1373. Bitfields for login state:
  1374. Bit(s)    Description    (Table 1083)
  1375.  0    fully logged in
  1376.  1    remote program load login
  1377.  2    user has system manager privileges
  1378.  3    user can create audit entries
  1379.  4    bypass mail protection
  1380.  5    treat as local process
  1381.  6    bypass queue protection
  1382.  7    bypass access control lists
  1383.  
  1384. (Table 1084)
  1385. Values for last LANtastic command:
  1386.  00h    login
  1387.  01h    process termination
  1388.  02h    open file
  1389.  03h    close file
  1390.  04h    create file
  1391.  05h    create new file
  1392.  06h    create unique file
  1393.  07h    commit data to disk
  1394.  08h    read file
  1395.  09h    write file
  1396.  0Ah    delete file
  1397.  0Bh    set file attributes
  1398.  0Ch    lock byte range
  1399.  0Dh    unlock byte range
  1400.  0Eh    create subdirectory
  1401.  0Fh    remove subdirectory
  1402.  10h    rename file
  1403.  11h    find first matching file
  1404.  12h    find next matching file
  1405.  13h    get disk free space
  1406.  14h    get a queue entry
  1407.  15h    set a queue entry
  1408.  16h    control the queue
  1409.  17h    return login information
  1410.  18h    return link description
  1411.  19h    seek on file
  1412.  1Ah    get server's time
  1413.  1Bh    create audit entry
  1414.  1Ch    open file in multitude of modes
  1415.  1Dh    change password
  1416.  1Eh    disable account
  1417.  1Fh    local server file copy
  1418. ---v3+---
  1419.  20h    get username from account file
  1420.  21h    translate server's logical path
  1421.  22h    make indirect file
  1422.  23h    get indirect file contents
  1423.  24h    get physical printer status
  1424.  25h    get logical print stream info
  1425.  26h    set logical print stream info
  1426.  27h    get user's account record
  1427. ---v4+---
  1428.  28h    request server shutdown
  1429.  29h    cancel server shutdown
  1430.  2Ah    stuff server's keyboard
  1431.  2Bh    write then commit data to disk
  1432.  2Ch    set extended queue entry
  1433.  2Dh    terminate user from server
  1434.  2Eh    enable/disable logins
  1435.  2Fh    flush server caches
  1436.  30h    change username
  1437.  31h    get extended queue entry
  1438.     (same as get queue, but can return named fields blanked)
  1439. --------N-215FB1-----------------------------
  1440. INT 21 - LANtastic - GET SHARED DIRECTORY INFORMATION
  1441.     AX = 5FB1h
  1442.     DS:SI -> 64-byte buffer for link description
  1443.     ES:DI -> ASCIZ machine and shared directory name in form
  1444.          "\\machine\shared-resource"
  1445. Return: CF clear if successful
  1446.         CX = access control list privileges for requesting user (see #1085)
  1447.     CF set on error
  1448.         AX = error code
  1449.  
  1450. Bitfields for LANtastic access control list:
  1451. Bit(s)    Description    (Table 1085)
  1452.  4    (I) allow expansion of indirect files
  1453.  5    (A) allow attribute changing
  1454.  6    (P) allow physical access to device
  1455.  7    (E) allow program execution
  1456.  8    (N) allow file renaming
  1457.  9    (K) allow directory deletion
  1458.  10    (D) allow file deletion
  1459.  11    (L) allow file/directory lookups
  1460.  12    (M) allow directory creation
  1461.  13    (C) allow file creation
  1462.  14    (W) allow open for write and writing
  1463.  15    (R) allow open for read and reading
  1464. --------N-215FB2-----------------------------
  1465. INT 21 - LANtastic v3+ - GET USERNAME FROM ACCOUNT FILE
  1466.     AX = 5FB2h
  1467.     BX = username entry index (0 for first)
  1468.     DS:SI -> 16-byte buffer for username
  1469.     ES:DI -> ASCIZ server name in form "\\machine"
  1470. Return: CF clear if successful
  1471.     CF set on error
  1472.         AX = error code
  1473.     BX = next queue entry index
  1474. SeeAlso: AX=5FB0h
  1475. --------N-215FB3-----------------------------
  1476. INT 21 - LANtastic v3+ - TRANSLATE PATH
  1477.     AX = 5FB3h
  1478.     DS:SI -> 128-byte buffer for ASCIZ result
  1479.     ES:DI -> full ASCIZ path, including server name
  1480.     DX = types of translation to be performed
  1481.         bit 0: expand last component as indirect file
  1482.         bit 1: return actual path relative to server's physical disk
  1483. Return: CF clear if successful
  1484.     CF set on error
  1485.         AX = error code
  1486. Note:    always expands any indirect files along the path
  1487. SeeALso: AX=5FB4h,INT 21/AH=60h
  1488. --------N-215FB4-----------------------------
  1489. INT 21 - LANtastic v3+ - CREATE INDIRECT FILE
  1490.     AX = 5FB4h
  1491.     DS:SI -> 128-byte buffer containing ASCIZ contents of indirect file
  1492.     ES:DI -> full ASCIZ path of indirect file to create, incl machine name
  1493. Return: CF clear if successful
  1494.     CF set on error
  1495.         AX = error code
  1496. Note:    the contents of the indirect file may be any valid server-relative path
  1497. SeeAlso: AX=5FB3h,AX=5FB5h
  1498. --------N-215FB5-----------------------------
  1499. INT 21 - LANtastic v3+ - GET INDIRECT FILE CONTENTS
  1500.     AX = 5FB5h
  1501.     DS:SI -> 128-byte buffer for ASCIZ indirect file contents
  1502.     ES:DI -> full ASCIZ path of indirect file
  1503. Return: CF clear if successful
  1504.     CF set on error
  1505.         AX = error code
  1506. SeeAlso: AX=5FB4h
  1507. --------N-215FB6-----------------------------
  1508. INT 21 - LANtastic v4.1+ - SET AUTO-LOGIN DEFAULTS
  1509.     AX = 5FB6h
  1510.     ES:DI -> pointer to ASCIZ default user name, immediately followed by
  1511.         ASCIZ password
  1512.     BL = adapter number to use for default login attempt
  1513.         FFh try all valid adapters
  1514.         00h-05h try adapter 0-5 explicitly
  1515. Return: CF clear if successful
  1516.     CF set on error
  1517.         AX = error code
  1518. Notes:    call with ES:DI -> two nulls to disable auto-login
  1519. SeeAlso: AX=5FB7h
  1520. --------N-215FB7-----------------------------
  1521. INT 21 - LANtastic v4.1+ - GET AUTO-LOGIN DEFAULTS
  1522.     AX = 5FB7h
  1523.     ES:DI -> pointer to 16-byte buffer to store ASCIZ auto-login user name
  1524. Return: CF clear if successful
  1525.         DL = adapter number used for default login attempt
  1526.         FFh all valid adapters will be tried
  1527.         00h-05h specified adapter will be tried explicitly
  1528.     CF set on error
  1529.         AX = error code
  1530. SeeAlso: AX=5F81h,AX=5FB6h
  1531. --------N-215FC0-----------------------------
  1532. INT 21 - LANtastic - GET TIME FROM SERVER
  1533.     AX = 5FC0h
  1534.     DS:SI -> time block (see #1086)
  1535.     ES:DI -> ASCIZ server name to get time from
  1536. Return: CF clear if successful
  1537.     CF set on error
  1538.         AX = error code
  1539. SeeAlso: AH=E7h"Novell"
  1540.  
  1541. Format of LANtastic time block:
  1542. Offset    Size    Description    (Table 1086)
  1543.  00h    WORD    year
  1544.  02h    BYTE    day
  1545.  03h    BYTE    month
  1546.  04h    BYTE    minutes
  1547.  05h    BYTE    hour
  1548.  06h    BYTE    hundredths of second
  1549.  07h    BYTE    second
  1550. --------N-215FC8-----------------------------
  1551. INT 21 - LANtastic v4.0+ - SCHEDULE SERVER SHUTDOWN
  1552.     AX = 5FC8h
  1553.     ES:DI -> ASCIZ server name in form "\\machine"
  1554.     DS:SI -> ASCIZ reason string (80 characters)
  1555.     CX = number of minutes until shutdown (0 = immediate)
  1556.     DX = option flags (see #1087)
  1557. Return: CF clear if successful
  1558.     CF set on error
  1559.         AX = error code
  1560. SeeAlso: AX=5FC9h
  1561.  
  1562. Bitfields for LANtastic option flags:
  1563. Bit(s)    Description    (Table 1087)
  1564.  0    auto reboot
  1565.  1    do not notify users
  1566.  2    halt after shutdown
  1567.  3    shutdown due to power fail (used by UPS)
  1568.  4-7    reserved
  1569.  8-14    user definable
  1570.  15    reserved
  1571. --------N-215FC9-----------------------------
  1572. INT 21 - LANtastic v4.0+ - CANCEL SERVER SHUTDOWN
  1573.     AX = 5FC9h
  1574.     ES:DI -> ASCIZ server name in form "\\machine"
  1575. Return: CF clear if successful
  1576.     CF set on error
  1577.         AX = error code
  1578. Note:    you must have the "S" privilege to use this call
  1579. SeeAlso: AX=5FC8h
  1580. --------N-215FCA-----------------------------
  1581. INT 21 - LANtastic v4.0+ - STUFF SERVER KEYBOARD BUFFER
  1582.     AX = 5FCAh
  1583.     ES:DI -> ASCIZ server name in form "\\machine"
  1584.     DS:SI -> ASCIZ string to stuff (128 bytes)
  1585. Return: CF clear if successful
  1586.     CF set on error
  1587.         AX = error code
  1588. Note:    you must have the "S" privilege to use this call
  1589.     maximum number of characters that can be stuffed is determined by the
  1590.       server's RUN BUFFER SIZE.
  1591. SeeAlso: INT 16/AH=05h
  1592. --------N-215FCB-----------------------------
  1593. INT 21 - LANtastic v4.1+ - TERMINATE USER
  1594.     AX = 5FCBh
  1595.     ES:DI -> ASCIZ server name in form "\\machine"
  1596.     DS:SI -> blank-padded username.     A null char = wildcard.
  1597.     DS:DX -> blank-padded machine name.  A null char = wildcard.
  1598.     CX = minutes until termination (0 = immediate)
  1599. Return: CF clear if successful
  1600.     CF set on error
  1601.         AX = error code
  1602. Note:    you must have the "S" privilege to use this call
  1603.     you cannot log yourself out using this call
  1604. SeeAlso: AX=5F82h
  1605. --------N-215FCC-----------------------------
  1606. INT 21 - LANtastic v4.1+ - GET/SET SERVER CONTROL BITS
  1607.     AX = 5FCCh
  1608.     ES:DI -> ASCIZ server name in form "\\machine"
  1609.     CX = bit values (value of bits you want to set) (see #1088)
  1610.     DX = bit mask (bits you are interested in, 0 = get only) (see #1088)
  1611. Return: CF clear if successful
  1612.         CX = control bits after call (see #1088)
  1613.     CF set on error
  1614.         AX = error code
  1615. Note:    you must have the "S" privilege to SET, anyone can GET.
  1616.  
  1617. Bitfields for control bits:
  1618. Bit(s)    Description    (Table 1088)
  1619.  0    disable logins
  1620. --------N-215FCD-----------------------------
  1621. INT 21 - LANtastic v4.1+ - FLUSH SERVER CACHES
  1622.     AX = 5FCDh
  1623.     ES:DI -> ASCIZ server name in form "\\machine"
  1624. Return: CF clear if successful
  1625.     CF set on error
  1626.         AX = error code
  1627. Note:    you must have the "S" privilege to use this call.
  1628. --------N-215FD0-----------------------------
  1629. INT 21 - LANtastic - GET REDIRECTED PRINTER TIMEOUT
  1630.     AX = 5FD0h
  1631. Return: CF clear if successful
  1632.         CX = redirected printer timeout in clock ticks of 55ms
  1633.         0000h if timeout disabled
  1634.     CF set on error
  1635.         AX = error code
  1636. SeeAlso: AX=5FD1h
  1637. --------N-215FD1-----------------------------
  1638. INT 21 - LANtastic - SET REDIRECTED PRINTER TIMEOUT
  1639.     AX = 5FD1h
  1640.     CX = printer timeout in clock ticks of 55ms, 0000h to disable timeouts
  1641. Return: CF clear if successful
  1642.     CF set on error
  1643.         AX = error code
  1644. SeeAlso: AX=5FD0h
  1645. --------N-215FE0-----------------------------
  1646. INT 21 C - LANtastic - GET DOS SERVICE VECTOR
  1647.     AX = 5FE0h
  1648. Return: CF clear if successful
  1649.         ES:BX -> current FAR service routine
  1650.     CF set on error
  1651.         AX = error code
  1652. Note:    the service routine is called by the LANtastic redirector whenever DOS
  1653.       may safely be called, permitting external TSRs and drivers to hook
  1654.       into LANtastic's DOS busy flag checking
  1655. SeeAlso: AX=5FE1h,INT 28,INT 2A/AH=84h
  1656. --------N-215FE1-----------------------------
  1657. INT 21 - LANtastic - SET DOS SERVICE VECTOR
  1658.     AX = 5FE1h
  1659.     ES:BX -> FAR routine to call when DOS services are available
  1660. Return: CF clear if successful
  1661.     CF set on error
  1662.         AX = error code
  1663. Note:    new handler must chain to previous handler as its first action
  1664. SeeAlso: AX=5FE0h
  1665. --------N-215FE2-----------------------------
  1666. INT 21 - LANtastic - GET MESSAGE SERVICE VECTOR
  1667.     AX = 5FE2h
  1668. Return: CF clear if successful
  1669.         ES:BX -> current FAR message service routine
  1670.     CF set on error
  1671.         AX = error code
  1672. SeeAlso: AX=5FE0h,AX=5FE3h
  1673. --------N-215FE3-----------------------------
  1674. INT 21 - LANtastic - SET MESSAGE SERVICE VECTOR
  1675.     AX = 5FE3h
  1676.     ES:BX -> FAR routine for processing network messages
  1677. Return: CF clear if successful
  1678.     CF set on error
  1679.         AX = error code
  1680. Notes:    handler must chain to previous handler as its first action
  1681.     on invocation, ES:BX -> just-received message
  1682. SeeAlso: AX=5FE2h
  1683. --------D-2160-------------------------------
  1684. INT 21 - DOS 3.0+ - "TRUENAME" - CANONICALIZE FILENAME OR PATH
  1685.     AH = 60h
  1686.     DS:SI -> ASCIZ filename or path
  1687.     ES:DI -> 128-byte buffer for canonicalized name
  1688. Return: CF set on error
  1689.         AX = error code
  1690.         02h invalid component in directory path or drive letter only
  1691.         03h malformed path or invalid drive letter
  1692.         ES:DI buffer unchanged
  1693.     CF clear if successful
  1694.         AH = 00h or 3Ah (DOS 6.1/6.2 for character device)
  1695.         AL = destroyed (00h or 2Fh or 5Ch or last character of current
  1696.           directory on drive)
  1697.         buffer filled with qualified name of form D:\PATH\FILE.EXT or
  1698.           \\MACHINE\PATH\FILE.EXT
  1699. Desc:    determine the canonical name of the specified filename or path,
  1700.       corresponding to the undocumented TRUENAME command in COMMAND.COM
  1701. Notes:    the input path need not actually exist
  1702.     letters are uppercased, forward slashes converted to backslashes,
  1703.       asterisks converted to appropriate number of question marks, and
  1704.       file and directory names are truncated to 8.3 if necessary.  (DR DOS
  1705.       3.41 and 5.0 do not expand asterisks)
  1706.     '.' and '..' in the path are resolved
  1707.     filespecs on local drives always start with "d:", those on network
  1708.       drives always start with "\\"
  1709.     if path string is on a JOINed drive, the returned name is the one that
  1710.       would be needed if the drive were not JOINed; similarly for a
  1711.       SUBSTed, ASSIGNed, or network drive letter.    Because of this, it is
  1712.       possible to get a qualified name that is not legal under the current
  1713.       combination of SUBSTs, ASSIGNs, JOINs, and network redirections
  1714.     under DOS 3.3 through 6.00, a device name is translated differently if
  1715.       the device name does not have an explicit directory or the directory
  1716.       is \DEV (relative directory DEV from the root directory works
  1717.       correctly).  In these cases, the returned string consists of the
  1718.       unchanged device name and extension appended to the string X:/
  1719.       (forward slash instead of backward slash as in all other cases) where
  1720.       X is the default or explicit drive letter.
  1721.     under MS-DOS 7.0, this call returns the short name for any
  1722.       long-filename portions of the provided pathname or filename
  1723.     functions which take pathnames require canonical paths if invoked via
  1724.       INT 21/AX=5D00h
  1725.     supported by OS/2 v1.1 compatibility box
  1726.     NetWare 2.1x does not support characters with the high bit set; early
  1727.       versions of NetWare 386 support such characters except in this call.
  1728.       In addition, NetWare returns error code 3 for the path "X:\"; one
  1729.       should use "X:\." instead.
  1730.     Novell DOS 7 reportedly has difficulty with non-MS-DOS filenames on
  1731.       network drives, and can return "D:" instead of "SERVER/VOLUME"
  1732.     for DOS 3.3-6.0, the input and output buffers may be the same, as the
  1733.       canonicalized name is built in an internal buffer and copied to the
  1734.       specified output buffer as the very last step
  1735.     for DR DOS 6.0, this function is not automatically called when on a
  1736.       network.  Device drivers reportedly cannot make this call from their
  1737.       INIT function.  Using the same pointer for both input and output
  1738.       buffers is not supported in the April 1992 and earlier versions of
  1739.       DR DOS
  1740.     Corel's CORELCDX and MSCDEX without the /S switch return canonical
  1741.       names of the form "\\D.\A.\path", where "D" is the CD-ROM drive
  1742.       letter and "A" appears to indicate the first physical CD-ROM drive;
  1743.       MSCDEX with the /S switch returns a canonical name with embedded
  1744.       blanks.  Novell DOS 7 NWCDEX as of the 11/16/94 update returns the
  1745.       same canonical path as MSCDEX; earlier revisions returned
  1746.       "Cdex.   D:\path", where "D" is the CD-ROM drive letter
  1747. SeeAlso: AX=5FB3h,AX=7160h/CL=00h,INT 2F/AX=1123h,INT 2F/AX=1221h
  1748. --------D-2161-------------------------------
  1749. INT 21 - DOS 3.0+ - UNUSED (RESERVED FOR NETWORK USE)
  1750.     AH = 61h
  1751. Return: AL = 00h
  1752. Note:    this function does nothing and returns immediately
  1753. --------O-2161--BP6467-----------------------
  1754. INT 21 U - OS/2 v1.x FAPI - OS/2 FILE SYSTEM JOIN/SUBST
  1755.     AH = 61h
  1756.     BP = 6467h ("dg")
  1757.     AL = function
  1758.         00h list (i.e. get)
  1759.         01h add
  1760.         02h delete
  1761.     BX = drive number
  1762.     CX = size of buffer
  1763.     SI = type (0002h JOIN, 0003h SUBST)
  1764.     ES:DI -> buffer
  1765. Return: CF clear if successful
  1766.         AX = 0000h
  1767.         ES:DI buffer filled, if appropriate
  1768.     CF set on error
  1769.         AX = error code
  1770. Notes:    used by JOIN and SUBST to communicate with the OS/2 file system
  1771.     for function 00h (list), the ES:DI buffer is filled with the ASCIZ
  1772.       JOIN/SUBST path or an empty string if the drive is not JOINed/SUBSTed
  1773.     also supported by OS/2 v2.0+ Virtual DOS Machines
  1774. --------D-2162-------------------------------
  1775. INT 21 - DOS 3.0+ - GET CURRENT PSP ADDRESS
  1776.     AH = 62h
  1777. Return: BX = segment of PSP for current process
  1778. Notes:    this function does not use any of the DOS-internal stacks and may
  1779.       thus be called at any time, even during another INT 21h call
  1780.     the current PSP is not necessarily the caller's PSP
  1781.     identical to the undocumented AH=51h
  1782. SeeAlso: AH=50h,AH=51h
  1783. --------U-216262SI1994-----------------------
  1784. INT 21 - ENVLOCK - INSTALLATION CHECK
  1785.     AX = 6262h
  1786.     SI = 1994h
  1787. Return: AX = 1994h if installed
  1788.         ES = ENVLOCK's resident segment
  1789. Notes:    to deactivate ENVLOCK, zero out the byte at ES:[0102h]
  1790. Program: ENVLOCK is a TSR by Alexander Yanovsky (aka PC Hawk) that forces
  1791.       other TSRs to deallocate their environment when they stay resident
  1792. --------D-216300-----------------------------
  1793. INT 21 - DOS 2.25 only - GET LEAD BYTE TABLE ADDRESS
  1794.     AX = 6300h
  1795. Return: CF clear if successful
  1796.         DS:SI -> lead byte table (see #1089)
  1797.     CF set on error
  1798.         AX = error code (01h) (see #1020 at AH=59h/BX=0000h)
  1799. Notes:    does not preserve any registers other than SS:SP
  1800.     the US version of MS-DOS 3.30 treats this as an unused function,
  1801.       setting AL=00h and returning immediately
  1802. SeeAlso: AX=6301h,AH=07h,AH=08h,AH=0Bh
  1803.  
  1804. Format of double-byte character set lead byte table entry:
  1805. Offset    Size    Description    (Table 1089)
  1806.  00h  2 BYTEs    low/high ends of a range of leading byte of double-byte chars
  1807.  02h  2 BYTEs    low/high ends of a range of leading byte of double-byte chars
  1808.     ...
  1809.   N   2 BYTEs    00h,00h end flag
  1810. --------D-216300-----------------------------
  1811. INT 21 - DOS 3.2+ - GET DOUBLE BYTE CHARACTER SET LEAD-BYTE TABLE
  1812.     AX = 6300h
  1813. Return: AL = error code
  1814.         00h successful
  1815.         DS:SI -> DBCS table (see #1089)
  1816.         all other registers except CS:IP and SS:SP destroyed
  1817.         FFh not supported
  1818. Notes:    probably identical to AH=63h/AL=00h for DOS 2.25
  1819.     the US version of MS-DOS 3.30 treats this as an unused function,
  1820.       setting AL=00h and returning immediately, WITHOUT setting DS:SI;
  1821.       only the Far East versions of MS-DOS 3.2 and 3.3 supported this call
  1822.     the US version of DOS 4.0+ accepts this function, but returns an empty
  1823.       list
  1824.     IBM DOS 6.1 SYS.COM assumes that CF is set on error
  1825. SeeAlso: AX=6300h"DOS 2.25"
  1826. --------D-216301-----------------------------
  1827. INT 21 - DOS 2.25, DOS 3.2+ - SET KOREAN (HANGEUL) INPUT MODE
  1828.     AX = 6301h
  1829.     DL = new mode
  1830.         00h return only full characters on DOS keyboard input functions
  1831.         01h return partially-formed (interim) characters also
  1832. Return: AL = status
  1833.         00h successful
  1834.         FFh invalid mode
  1835. Notes:    Novell DOS 7 simply stores DL in the caller's PSP (see #0725 at AH=26h)
  1836.     the US version of MS-DOS 3.30 treats this as an unused function,
  1837.       setting AL=00h and returning immediately; only the Far East versions
  1838.       of MS-DOS 3.2 and 3.3 supported this call
  1839. SeeAlso: AH=07h,AH=08h,AH=0Bh,AH=63h,AX=6302h
  1840. --------D-216302-----------------------------
  1841. INT 21 - DOS 2.25, DOS 3.2+ - GET KOREAN (HANGEUL) INPUT MODE
  1842.     AX = 6302h
  1843. Return: AL = status
  1844.         00h successful
  1845.         DL = current input mode
  1846.             00h return only full characters (clears interim flag)
  1847.             01h return partial characters (sets interim flag)
  1848.         FFh not supported
  1849. Notes:    Novell DOS 7 simply reads the value out of the caller's PSP, so it
  1850.       can return values other than 00h or 01h if the last call to AX=6301h
  1851.       used another value
  1852.     the US version of MS-DOS 3.30 treats this as an unused function,
  1853.       setting AL=00h and returning immediately, WITHOUT setting DL; only
  1854.       the Far East versions of MS-DOS 3.2 and 3.3 supported this call
  1855. SeeAlso: AH=07h,AH=08h,AH=0Bh,AH=63h,AX=6301h
  1856. --------v-216303------------------------
  1857. INT 21 - VIRUS - "DOS IDLE" - INSTALLATION CHECK
  1858.     AX = 6303h
  1859. Return: BX = 6303h if resident
  1860. SeeAlso: AX=5643h"VIRUS",AX=6304h"VIRUS",AX=9AD5h"VIRUS"
  1861. --------v-216304------------------------
  1862. INT 21 - VIRUS - "Replicator" - INSTALLATION CHECK
  1863.     AX = 6304h
  1864. Return: BX = 6304h if resident
  1865. SeeAlso: AX=6303h"VIRUS",AX=6969h"VIRUS"
  1866. --------D-2164-------------------------------
  1867. INT 21 - DOS 3.2+ internal - SET DEVICE DRIVER LOOKAHEAD FLAG
  1868.     AH = 64h
  1869.     AL = flag
  1870.         00h (default) call device driver function 5 (non-dest read)
  1871.             before INT 21/AH=01h,08h,0Ah
  1872.         nonzero don't call driver function 5
  1873. Return: nothing (MS-DOS)
  1874.     CF set, AX=error code??? (DR DOS 5.0, which does not support this call)
  1875. Notes:    this function is called by the DOS 3.3+ PRINT.COM
  1876.     under MS-DOS, this function does not use any of the DOS-internal stacks
  1877.       and may thus be called at any time, even during another DOS call
  1878. SeeAlso: AH=01h,AH=08h,AH=0Ah,AX=5D06h
  1879. --------O-2164--DX0000-----------------------
  1880. INT 21 U - OS/2 v2.0+ Virtual DOS Machine - ENABLE AUTOMATIC TITLE SWITCH
  1881.     AH = 64h
  1882.     DX = 0000h (function number)
  1883.     CX = 636Ch (magic value, "cl")
  1884.     BX = 0000h (indicates special request)
  1885. Note:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1886.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1887. SeeAlso: AH=64h/DX=0001h,INT 21/AH=4Bh
  1888. --------O-2164--DX0001-----------------------
  1889. INT 21 U - OS/2 v2.0+ Virtual DOS Machine - SET SESSION TITLE
  1890.     AH = 64h
  1891.     DX = 0001h (function number)
  1892.     CX = 636Ch (magic value, "cl")
  1893.     BX = 0000h (indicates special request)
  1894.     ES:DI -> new ASCIZ title (max 12 char) or "" to restore default title
  1895. Note:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1896.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1897. SeeAlso: AH=64h/DX=0000h,AH=64h/DX=0002h,INT 15/AH=12h/BH=05h
  1898. --------O-2164--DX0002-----------------------
  1899. INT 21 U - OS/2 v2.0+ Virtual DOS Machine - GET SESSION TITLE
  1900.     AH = 64h
  1901.     DX = 0002h (function number)
  1902.     CX = 636Ch (magic value, "cl")
  1903.     BX = 0000h (indicates special request)
  1904.     ES:DI -> 13-byte buffer for current title
  1905. Return: buffer filled (single 00h if title never changed)
  1906. Note:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1907.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1908. SeeAlso: AH=64h/DX=0000h,AH=64h/DX=0001h,INT 15/AH=12h/BH=05h
  1909. --------O-2164--DX0003-----------------------
  1910. INT 21 U - OS/2 v2.1 Virtual DOS Machine - GET LASTDRIVE
  1911.     AH = 64h
  1912.     DX = 0003h (function number)
  1913.     CX = 636Ch (magic value, "cl")
  1914.     BX = 0000h (indicates special request)
  1915. Return: AL = highest drive supported
  1916. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1917.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1918.     used by WinOS2
  1919.     not supported by OS/2 Warp 3.0, check list of lists instead (see #0968)
  1920. SeeAlso: AH=52h
  1921. --------O-2164--DX0004-----------------------
  1922. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SIZE OF PTDA JFT
  1923.     AH = 64h
  1924.     DX = 0004h (function number)
  1925.     CX = 636Ch (magic value, "cl")
  1926.     BX = 0000h (indicates special request)
  1927. Return: AX = number of entries in OS/2 JFT for VDM
  1928. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1929.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1930.     in an OS/2 VDM, the DOS Job File Table in the PSP contains an index
  1931.       into the OS/2 JFT in the Per-Task Data Area rather than an SFT index
  1932.       because the OS/2 SFT can contain more than 255 entries
  1933. --------O-2164--DX0005-----------------------
  1934. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET SECOND SFT FLAGS WORD
  1935.     AH = 64h
  1936.     DX = 0005h (function number)
  1937.     CX = 636Ch (magic value, "cl")
  1938.     BX = 0000h (indicates special request)
  1939.     DI = DOS file handle
  1940. Return: AX = value of second flags word from OS/2 SFT entry for file
  1941. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1942.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1943.     the OS/2 SFT has two flags words rather than DOS's one word, and this
  1944.       function provides access to the word which is not present in DOS
  1945. --------O-2164--DX0006-----------------------
  1946. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - UNLOAD DOSKRNL SYMBOLS & LOAD PROGR
  1947.     AH = 64h
  1948.     DX = 0006h (function number)
  1949.     CX = 636Ch (magic value, "cl")
  1950.     BX = 0000h (indicates special request)
  1951.     ES:DI -> ASCIZ filespec
  1952.     DS = base address for loading
  1953. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1954.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1955.     this function is only supported by the kernel debugging version of
  1956.       OS2KRNL
  1957. --------O-2164--DX0007-----------------------
  1958. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET WinOS2 CALL GATE ADDRESS
  1959.     AH = 64h
  1960.     DX = 0007h (function number)
  1961.     CX = 636Ch (magic value, "cl")
  1962.     BX = 0000h (indicates special request)
  1963. Return: AX = call gate address
  1964. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1965.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1966.     used by WinOS2 to make direct calls to OS2KRNL, bypassing the overhead
  1967.       of DOSKRNL
  1968. --------O-2164--DX0008-----------------------
  1969. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - GET LOADING MESSAGE
  1970.     AH = 64h
  1971.     DX = 0008h (function number)
  1972.     CX = 636Ch (magic value, "cl")
  1973.     BX = 0000h (indicates special request)
  1974. Return: DS:DX -> '$'-terminated message "Loading.  Please wait."
  1975. Notes:    if CX is not 636Ch on entry, INT 21/AH=6Ch is invoked, because a bug
  1976.       in OS/2 1.x FAPI erroneously called AH=64h instead of AH=6Ch
  1977.     this function permits National Language Support for the initial message
  1978.       displayed while WinOS2 starts a full-screen session
  1979. --------O-2164--CX636C-----------------------
  1980. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API support
  1981.     AH = 64h
  1982.     CX = 636Ch ("cl")
  1983.     BX = API ordinal (see #1090)
  1984.     other registers as appropriate for API call
  1985. Return: as appropriate for API call
  1986. SeeAlso: AH=64h/BX=0025h,AH=64h/BX=00B6h,AH=64h/BX=00CBh
  1987.  
  1988. (Table 1090)
  1989. Values for OS/2 API ordinal:
  1990.  0025h    DOS32StartSession
  1991.  0082h    DosGetCP
  1992.  00B6h    DosQFSAttach
  1993.  00BFh    DosEditName
  1994.  00CBh    DosForceDelete
  1995.  0144h    Dos32CreateEventSem
  1996.  0145h    Dos32OpenEvenSem
  1997.  0146h    Dos32CloseEventSem
  1998.  0147h    Dos32ResetEventSem
  1999.  0148h    Dos32PostEventSem
  2000.  0149h    Dos32WaitEventSem
  2001.  014Ah    Dos32QueryEventSem
  2002.  014Bh    Dos32CreateMutexSem
  2003.  014Ch    Dos32OpenMutexSem
  2004.  014Dh    Dos32CloseMutexSem
  2005.  014Eh    Dos32RequestMutexSem
  2006.  014Fh    Dos32ReleaseMutexSem
  2007.  0150h    Dos32QueryMutexSem
  2008.  0151h    Dos32CreateMuxWaitSem
  2009.  0152h    Dos32OpenMuxWaitSem
  2010.  0153h    Dos32CloseMuxWaitSem
  2011.  0154h    Dos32WaitMuxWaitSem
  2012.  0155h    Dos32AddMuxWaitSem
  2013.  0156h    Dos32DeleteMuxWaitSem
  2014.  0157h    Dos32QueryMuxWaitSem
  2015. --------O-2164--BX0025-----------------------
  2016. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DOS32StartSession
  2017.     AH = 64h
  2018.     BX = 0025h (API ordinal)
  2019.     CX = 636Ch ("cl")
  2020.     DS:SI -> STARTDATA structure (see #1091)
  2021. Return: AX = return code
  2022. SeeAlso: AH=64h/CX=636Ch,AH=64h/BX=00B6h
  2023.  
  2024. Format of OS/2 Virtual DOS Machine STARTDATA structure:
  2025. Offset    Size    Description    (Table 1091)
  2026.  00h    WORD    length of structure (must be 0018h,001Eh,0020h,0032h,or 003Ch)
  2027.  02h    WORD    relation of new process to caller (00h independent, 01h child)
  2028.  04h    WORD    fore/background (00h foreground, 01h background)
  2029.  06h    WORD    trace options (00h-02h, 00h = no trace)
  2030.  08h    DWORD    pointer to ASCIZ program title (max 62 chars) or 0000h:0000h
  2031.  0Ch    DWORD    pointer to ASCIZ program name (max 128 chars) or 0000h:0000h
  2032.  10h    DWORD    pointer to ASCIZ program args (max 144 chars) or 0000h:0000h
  2033.  14h    DWORD    "TermQ" (currently reserved, must be 00000000h)
  2034.  18h    DWORD    pointer to environment (max 486 bytes) or 0000h:0000h
  2035.  1Ch    WORD    inheritance (00h or 01h)
  2036.  1Eh    WORD    session type
  2037.         00h OS/2 session manager determines type (default)
  2038.         01h OS/2 full-screen
  2039.         02h OS/2 window
  2040.         03h PM
  2041.         04h VDM full-screen
  2042.         07h VDM window
  2043.  20h    DWORD    pointer to ASCIZ icon filename (max 128 chars) or 0000h:0000h
  2044.  24h    DWORD    "PgmHandle" (currently reserved, must be 00000000h)
  2045.  28h    WORD    "PgmControl"
  2046.  2Ah    WORD    initial column
  2047.  2Ch    WORD    initial row
  2048.  2Eh    WORD    initial width
  2049.  30h    WORD    initial height
  2050.  32h    WORD    reserved (0)
  2051.  34h    DWORD    "ObjectBuffer" (currently reserved, must be 00000000h)
  2052.  38h    DWORD    "ObjectBufferLen" (currently reserved, must be 00000000h)
  2053. --------O-2164--BX00B6-----------------------
  2054. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosQFSAttach
  2055.     AH = 64h
  2056.     BX = 00B6h (API ordinal)
  2057.     CX = 636Ch (magic value "cl")
  2058.     DS = user's data segment
  2059.     ES:DI -> FSQAttachStruc (see #1092)
  2060. Return: CF set on error
  2061.         AX = error code (see #1020 at AH=59h/BX=0000h)
  2062.     CF clear if successful
  2063.         AX = 0000h
  2064.         data buffer filled
  2065. SeeAlso: AH=64h/CX=636Ch
  2066.  
  2067. Format of OS/2 Virtual DOS Machine FSQAttachStruc:
  2068. Offset    Size    Description    (Table 1092)
  2069.  00h    DWORD    reserved
  2070.  04h    DWORD    pointer to the offset of the data buffer length
  2071.  08h    DWORD    pointer to the offset of the data buffer
  2072.  0Ch    WORD    FSA Info level
  2073.  0Eh    WORD    ordinal index into table
  2074.  10h    DWORD    pointer to the offset of the device name
  2075. Notes:    The segment value of the buffer, buffer length, and device
  2076.       name MUST all be the same.  It is defined on entry in the DS
  2077.       register.  The details of each info level are defined in the
  2078.       OS/2 CP Reference.
  2079. --------O-2164--BX00CB-----------------------
  2080. INT 21 U - OS/2 v2.1+ Virtual DOS Machine - OS/2 API DosForceDelete
  2081.     AH = 64h
  2082.     BX = 00CBh (API ordinal)
  2083.     CX = 636Ch (magic value "cl")
  2084.     DS:DX -> ASCIZ filename
  2085. Return: CF clear if successful
  2086.         AX destroyed
  2087.     CF set on error
  2088.         AX = error code (02h,03h,05h) (see #1020 at AH=59h/BX=0000h)
  2089. Desc:    delete a file without saving it to the undelete directory
  2090. SeeAlso: AH=41h,AH=64h/CX=636Ch
  2091. --------D-2165-------------------------------
  2092. INT 21 - DOS 3.3+ - GET EXTENDED COUNTRY INFORMATION
  2093.     AH = 65h
  2094.     AL = info ID
  2095.         01h get general internationalization info
  2096.         02h get pointer to uppercase table
  2097.         04h get pointer to filename uppercase table
  2098.         05h get pointer to filename terminator table
  2099.         06h get pointer to collating sequence table
  2100.         07h (DOS 4.0+) get pointer to Double-Byte Character Set table
  2101.     BX = code page (FFFFh=global code page) (see #1099)
  2102.     DX = country ID (FFFFh=current country)
  2103.     ES:DI -> country information buffer (see #1093)
  2104.     CX = size of buffer (>= 5)
  2105. Return: CF set on error
  2106.         AX = error code (see #1020 at AH=59h/BX=0000h)
  2107.     CF clear if successful
  2108.         CX = size of country information returned
  2109.         ES:DI -> country information
  2110. Notes:    AL=05h appears to return same info for all countries and codepages; it
  2111.       has been documented for DOS 5+, but was undocumented in earlier
  2112.       versions
  2113.     NLSFUNC must be installed to get info for countries other than the
  2114.       default
  2115.     subfunctions 02h and 04h are identical under OS/2
  2116. SeeAlso: AH=38h,INT 2F/AX=1401h,INT 2F/AX=1402h,INT 2F/AX=14FEh
  2117.  
  2118. Format of country information:
  2119. Offset    Size    Description    (Table 1093)
  2120.  00h    BYTE    info ID
  2121. ---if info ID = 01h---
  2122.  01h    WORD    size
  2123.  03h    WORD    country ID
  2124.  05h    WORD    code page (see #1099)
  2125.  07h 34 BYTEs    country-dependent info (see AH=38h)
  2126. ---if info ID = 02h---
  2127.  01h    DWORD    pointer to uppercase table (see #1094)
  2128. ---if info ID = 04h---
  2129.  01h    DWORD    pointer to filename uppercase table (see #1095)
  2130. ---if info ID = 05h---
  2131.  01h    DWORD    pointer to filename character table (see #1096)
  2132. ---if info ID = 06h---
  2133.  01h    DWORD    pointer to collating table (see #1097)
  2134. ---if info ID = 07h (DOS 4.0+)---
  2135.  01h    DWORD    pointer to DBCS lead byte table (see #1098)
  2136.  
  2137. Format of uppercase table:
  2138. Offset    Size    Description    (Table 1094)
  2139.  00h    WORD    table size
  2140.  02h 128 BYTEs    uppercase equivalents (if any) of chars 80h to FFh
  2141.  
  2142. Format of filename uppercase table:
  2143. Offset    Size    Description    (Table 1095)
  2144.  00h    WORD    table size
  2145.  02h 128 BYTEs    uppercase equivalents (if any) of chars 80h to FFh
  2146.  
  2147. Format of filename terminator table:
  2148. Offset    Size    Description    (Table 1096)
  2149.  00h    WORD    table size (not counting this word)
  2150.  02h    BYTE    ??? (01h for MS-DOS 3.30-6.00)
  2151.  03h    BYTE    lowest permissible character value for filename
  2152.  04h    BYTE    highest permissible character value for filename
  2153.  05h    BYTE    ??? (00h for MS-DOS 3.30-6.00)
  2154.  06h    BYTE    first excluded character in range \ all characters in this
  2155.  07h    BYTE    last excluded character in range  / range are illegal
  2156.  08h    BYTE    ??? (02h for MS-DOS 3.30-6.00)
  2157.  09h    BYTE    number of illegal (terminator) characters
  2158.  0Ah  N BYTEs    characters which terminate a filename:    ."/\[]:|<>+=;,
  2159. Note:    partially documented for DOS 5+, but undocumented for earlier versions
  2160.  
  2161. Format of collating table:
  2162. Offset    Size    Description    (Table 1097)
  2163.  00h    WORD    table size
  2164.  02h 256 BYTEs    values used to sort characters 00h to FFh
  2165.  
  2166. Format of DBCS lead byte table:
  2167. Offset    Size    Description    (Table 1098)
  2168.  00h    WORD    length
  2169.  02h 2N BYTEs    start/end for N lead byte ranges
  2170.     WORD    0000h    (end of table)
  2171. --------D-2165-------------------------------
  2172. INT 21 - DOS 4.0+ - COUNTRY-DEPENDENT CHARACTER CAPITALIZATION
  2173.     AH = 65h
  2174.     AL = function
  2175.         20h capitalize character
  2176.         DL = character to capitalize
  2177.         Return: DL = capitalized character
  2178.         21h capitalize string
  2179.         DS:DX -> string to capitalize
  2180.         CX = length of string
  2181.         22h capitalize ASCIZ string
  2182.         DS:DX -> ASCIZ string to capitalize
  2183. Return: CF set on error
  2184.         AX = error code (see #1020 at AH=59h/BX=0000h)
  2185.     CF clear if successful
  2186. Note:    these calls have been documented for DOS 5+, but were undocumented in
  2187.       DOS 4.x.
  2188. --------D-216523-----------------------------
  2189. INT 21 U - DOS 4.0+ - DETERMINE IF CHARACTER REPRESENTS YES/NO RESPONSE
  2190.     AX = 6523h
  2191.     DL = character
  2192.     DH = second character of double-byte character (if applicable)
  2193. Return: CF set on error
  2194.     CF clear if successful
  2195.         AX = type
  2196.         00h no
  2197.         01h yes
  2198.         02h neither yes nor no
  2199. Note:    supported by Novell DOS 7, though prior to Update 14, the results
  2200.       depended on the kernel variant rather than the COUNTRY= setting
  2201. --------D-2165-------------------------------
  2202. INT 21 U - DOS 4.0+ internal - COUNTRY-DEPENDENT FILENAME CAPITALIZATION
  2203.     AH = 65h
  2204.     AL = function
  2205.         A0h capitalize filename character
  2206.         DL = character to capitalize
  2207.         Return: DL = capitalized character
  2208.         A1h capitalize counted filename string
  2209.         DS:DX -> filename string to capitalize
  2210.         CX = length of string
  2211.         A2h capitalize ASCIZ filename
  2212.         DS:DX -> ASCIZ filename to capitalize
  2213. Return: CF set on error
  2214.         AX = error code (see #1020 at AH=59h/BX=0000h)
  2215.     CF clear if successful
  2216. Note:    nonfunctional in MS-DOS 4.00 through 6.00 due to a bug (the code sets a
  2217.       pointer depending on the high bit of AL, but doesn't clear the
  2218.       bit before branching by function number).  Supported and
  2219.       functional(!) in Novell DOS 7 (Update 15)
  2220. --------D-216601-----------------------------
  2221. INT 21 - DOS 3.3+ - GET GLOBAL CODE PAGE TABLE
  2222.     AX = 6601h
  2223. Return: CF set on error
  2224.         AX = error code (see #1020 at AH=59h/BX=0000h)
  2225.     CF clear if successful
  2226.         BX = active code page (see #1099)
  2227.         DX = system code page (see #1099)
  2228. SeeAlso: AX=6602h
  2229. --------D-216602-----------------------------
  2230. INT 21 - DOS 3.3+ - SET GLOBAL CODE PAGE TABLE
  2231.     AX = 6602h
  2232.     BX = active code page (see #1099)
  2233.     DX = system code page (active page at boot time)
  2234. Return: CF set on error
  2235.         AX = error code (see #1020 at AH=59h/BX=0000h)
  2236.     CF clear if successful
  2237.         AX = EB41h (Novell NWDOS v7.0 when NLSFUNC not installed and
  2238.           request was for previously-active code page)
  2239. SeeAlso: AX=6601h,INT 2F/AX=14FFh
  2240.  
  2241. (Table 1099)
  2242. Values for code page:
  2243.  437    US
  2244.  850    Multilingual
  2245.  852    Slavic/Latin II (DOS 5+)
  2246.  857    Turkish
  2247.  860    Portugal
  2248.  861    Iceland
  2249.  863    Canada (French)
  2250.  865    Norway/Denmark
  2251.  
  2252. Format of DOS .CPI (Code Page Information) file header:
  2253. Offset    Size    Description    (Table 1100)
  2254.  00h    BYTE    ID tag
  2255.         FFh FONT file (Standard for generic display or
  2256.               printer font files used by MS-DOS, PC-DOS, DR DOS
  2257.               and Novell DOS)
  2258.         7Fh DRFONT file (Used by DR DOS 6.0 / Novell DOS 7 for
  2259.               enhanced & compressed display font files. DR DOS 6.0
  2260.               and Novell DOS 7 still support the standard FONT
  2261.               files, thus allowing leaning of .CPI files from
  2262.               MS-DOS to DR DOS / Novell DOS!)
  2263.  01h  7 BYTEs    ID string
  2264.         "FONT    " = FONT file (Standard for display or printer)
  2265.         "DRFONT " = DRFONT file (Enhanced compressed format used
  2266.                 by DR DOS 6.0 / Novell DOS 7 for display fonts)
  2267.  08h  8 BYTEs    reserved (0)
  2268.  10h    WORD    number of pointers (1)
  2269.  12h    BYTE    type of pointers (1)
  2270.  13h    DWORD    pointer to file offset of FontInfoHeader
  2271.         (Generally pointing to the byte just after FontFileHeader,
  2272.              that is 0000h:0017h. Due to extra data at offset 17h, this
  2273.              value has changed with DR DOS 6.0 / Novell DOS 7 DRFONTs!
  2274.              "MS-DOS 4.0 programmers reference" claimed word offset
  2275.              +15h as an endmarker (0000h), but actually it is the
  2276.              High-Word of the pointer.)
  2277. --- Extended FontFileHeader with DR DOS 6.0 / Novell DOS 7 DRFONTs: ---
  2278.  17h    BYTE    number of fonts per codepage supported by this file
  2279.              (N=4 with both DR DOS 6.0 / Novell DOS 7 DRFONT files)
  2280.  18h  N    BYTEs    cellsize (Height) of fonts 1..N
  2281.         the cellsize corresponds with the character boxes height,
  2282.           but is also the count of bytes used for each of the
  2283.           characters inside the font data (as currently all fonts
  2284.           are organized heightx8 and 8 pixel width is just one byte).
  2285.  var  N DWORDs    file offsets of DisplayFontData.
  2286.  
  2287. Format of DOS .CPI file Font Information Header:
  2288. Offset    Size    Description    (Table 1101)
  2289.  00h    WORD    number of codepage entries
  2290.     var    N codepage entry headers (see #1102)
  2291. SeeAlso: #1100
  2292.  
  2293. Format of DOS .CPI file CodePage Entry Header:
  2294. Offset    Size    Description    (Table 1102)
  2295.  00h    WORD    size of this header (normally 1Ch)
  2296.  02h    DWORD    offset of next entry, or 0000h:0000h or FFFFh:FFFFh if last
  2297.         (if a valid "next" pointer but all of the fonts indicated in
  2298.           the .CPI header have been processed, this field normally
  2299.           points at an optional text area at the end of the .CPI file
  2300.           containing copyright information)
  2301.  06h    WORD    device type
  2302.         01h display (FONT or DRFONT)
  2303.         02h printer (FONT)
  2304.  08h  8 BYTEs    blank-padded device name string
  2305.  10h    WORD    code page (see #1099)
  2306.  12h  3 WORDs    reserved (0)
  2307.  18h    DWORD    pointer to Font Data Header (see #0132)
  2308.         normally immediately follows this header
  2309. SeeAlso: #1100
  2310.  
  2311. Format of DOS .CPI file Font Data Header:
  2312. Offset    Size    Description    (Table 1103)
  2313.  00h    WORD    record type
  2314.         0001h FONT
  2315.         0002h DRFONT (DR-DOS 6.0/Novell DOS 7 display font)
  2316.  02h    WORD    number of fonts
  2317.  04h    WORD    length of font data (display fonts)
  2318.         ??? (printer fonts)
  2319.  06h    var    font data (#fonts * fontlength) bytes
  2320. SeeAlso: #1100
  2321.  
  2322. Format of DOS .CPI file ScreenFONT Header:
  2323. Offset    Size    Description    (Table 1104)
  2324.  00h  6 BYTEs    display-font header (see #1106)
  2325.  06h    var    display font data
  2326. SeeAlso: #1100
  2327.  
  2328. Format of .CPI file DRFONT Header:
  2329. Offset    Size    Description    (Table 1105)
  2330.  00h 6N BYTEs    DisplayFONT headers for N fonts (see #1106)
  2331.       M WORDs    character index table for cell offsets in font data
  2332.         currently 256 words in length
  2333. SeeAlso: #1100
  2334.  
  2335. Format of .CPI file DisplayFONT header:
  2336. Offset    Size    Description    (Table 1106)
  2337.  00h    BYTE    height of character cell
  2338.  01h    BYTE    width of character cell (currently always 08h)
  2339.  02h    BYTE    aspect ratio (height) (currently 00h, unused)
  2340.  03h    BYTE    aspect ratio (width) (currently 00h, unused)
  2341.  04h    WORD    number of characters per font (256)
  2342. SeeAlso: #1100
  2343.  
  2344. Format of .CPI file PrinterFONT header:
  2345. Offset    Size    Description    (Table 1107)
  2346.  00h    WORD    type of printer
  2347.         0001h (4201.CPI, 1050.CPI, EPS.CPI)
  2348.         0002h (4208.CPI, 5202.CPI, PPDS.CPI)
  2349.  02h    WORD    bytes per hardware/download codepage-select escape sequence
  2350.         (max 31, typically 12)
  2351.  04h  N BYTEs    escape sequence to select hardware codepage
  2352.       N BYTEs    escape sequence to select download codepage
  2353.     var    download data for printer font (including escape sequence to
  2354.           transfer data)
  2355. SeeAlso: #1100
  2356. --------D-2167-------------------------------
  2357. INT 21 - DOS 3.3+ - SET HANDLE COUNT
  2358.     AH = 67h
  2359.     BX = size of new file handle table for process
  2360. Return: CF clear if successful
  2361.     CF set on error
  2362.         AX = error code (see #1020 at AH=59h/BX=0000h)
  2363. Desc:    adjust the size of the per-process open file table, thus raising or
  2364.       lowering the limit on the number of files the caller can open
  2365.       simultaneously
  2366. Notes:    if BX <= 20, no action is taken if the handle limit has not yet been
  2367.       increased, and the table is copied back into the PSP if the limit
  2368.       is currently > 20 handles
  2369.     for file handle tables of > 20 handles, DOS 3.30 never reuses the
  2370.       same memory block, even if the limit is being reduced; this can lead
  2371.       to memory fragmentation as a new block is allocated and the existing
  2372.       one freed
  2373.     only the first 20 handles are copied to child processes in DOS 3.3-6.0
  2374.     increasing the file handles here will not, in general, increase the
  2375.       number of files that can be opened using the runtime library of a
  2376.       high-level language such as C
  2377.     Novell DOS 7 reportedly terminates the calling program if the JFT is
  2378.       being reduced in size and there are any open file handles beyond
  2379.       the portion of the JFT being retained
  2380. BUGS:    the original release of DOS 3.30 allocates a full 64K for the handle
  2381.       table on requests for an even number of handles
  2382.     DR DOS 3.41 and 5.0 will lose track of any open file handles beyond
  2383.       the portion of the JFT retained after the call; MS-DOS will indicate
  2384.       error 04h if any of the JFT entries to be removed are open
  2385. SeeAlso: AH=26h,AH=86h
  2386. --------D-2168-------------------------------
  2387. INT 21 - DOS 3.3+ - "FFLUSH" - COMMIT FILE
  2388.     AH = 68h
  2389.     BX = file handle
  2390. Return: CF clear if successful
  2391.         all data still in DOS disk buffers is written to disk immediately,
  2392.           and the file's directory entry is updated
  2393.     CF set on error
  2394.         AX = error code (see #1020 at AH=59h/BX=0000h)
  2395. SeeAlso: AX=5D01h,AH=6Ah,INT 2F/AX=1107h
  2396. --------D-2169-------------------------------
  2397. INT 21 U - DOS 4.0+ internal - GET/SET DISK SERIAL NUMBER
  2398.     AH = 69h
  2399.     AL = subfunction
  2400.         00h get serial number
  2401.         01h set serial number
  2402.     BL = drive (0=default, 1=A, 2=B, etc)
  2403.     BH = info level (00h only for DOS; OS/2 allows other levels)
  2404.     DS:DX -> disk info (see #1108)
  2405. Return: CF set on error
  2406.         AX = error code (see #1020 at AH=59h/BX=0000h)
  2407.     CF clear if successful
  2408.         AX destroyed
  2409.         (AL = 00h) buffer filled with appropriate values from extended BPB
  2410.         (AL = 01h) extended BPB on disk set to values from buffer
  2411. Notes:    does not generate a critical error; all errors are returned in AX
  2412.     error 0005h given if no extended BPB on disk
  2413.     does not work on network drives (error 0001h)
  2414.     buffer after first two bytes is exact copy of bytes 27h thru 3Dh of
  2415.       extended BPB on disk
  2416.     this function is supported under Novell NetWare versions 2.0A through
  2417.       3.11; the returned serial number is the one a DIR would display,
  2418.       the volume label is the NetWare volume label, and the file system
  2419.       is set to "FAT16".
  2420.     this function is not supported by Novell DOS 7 through Update 13, but
  2421.       Personal NetWare 1.0 does support this function
  2422.     the serial number is computed from the current date and time when the
  2423.       disk is created; the first part is the sum of the seconds/hundredths
  2424.       and month/day, the second part is the sum of the hours/minutes and
  2425.       year
  2426.     the volume label which is read or set is the one stored in the extended
  2427.       BPB on disks formatted with DOS 4.0+, rather than the special root
  2428.       directory entry used by the DIR command in COMMAND.COM (use AH=11h
  2429.       to find that volume label)
  2430. SeeAlso: AX=440Dh"DOS 3.2+"
  2431.  
  2432. Format of disk info:
  2433. Offset    Size    Description    (Table 1108)
  2434.  00h    WORD    0000h (info level)
  2435.  02h    DWORD    disk serial number (binary)
  2436.  06h 11 BYTEs    volume label or "NO NAME    " if none present
  2437.  11h  8 BYTEs    (AL=00h only) filesystem type (see #1109)
  2438.  
  2439. (Table 1109)
  2440. Values for filesystem type:
  2441.  "FAT12      "    12-bit FAT
  2442.  "FAT16      "    16-bit FAT
  2443.  "CDROM      "    High-Sierra CD-ROM filesystem
  2444.  "CD001      "    ISO 9660 CD-ROM filesystem
  2445.  "CDAUDIO "    audio CD
  2446. SeeAlso: #1108
  2447. --------O-2169-------------------------------
  2448. INT 21 - DR DOS 5.0 - NULL FUNCTION
  2449.     AH = 69h
  2450. Return: AL = 00h
  2451. SeeAlso: AH=18h
  2452. --------v-216969-----------------------------
  2453. INT 21 - VIRUS - "Rape-747" - INSTALLATION CHECK
  2454.     AX = 6969h
  2455. Return: AX = 0666h if resident
  2456. SeeAlso: AX=58CCh,AX=6304h"VIRUS",AH=76h"VIRUS"
  2457. --------d-2169FFDX0000-----------------------
  2458. INT 21 U - CUBIT v4.00 - GET CUBIT INT 21 HANDLER
  2459.     AX = 69FFh
  2460.     DX = 0000h
  2461.     BX = CB00h (magic value)
  2462. Return: ES:BX -> CUBITR.EXE handler for INT 21
  2463. Note:    the installation check consists of testing that the first eight bytes
  2464.       at the returned interrupt handler are EBh 07h "CUBITR" (a short
  2465.       jump around the signature followed by the signature); the byte
  2466.       following the signature (i.e. ES:[BX+8]) indicates whether CUBITR
  2467.       is active (01h) or disabled (00h)
  2468. SeeAlso: AX=69FFh/DX=CFBFh
  2469. Index:    installation check;CUBIT
  2470. --------d-2169FFDXCFBF-----------------------
  2471. INT 21 U - CUBIT v4.00 - UNINSTALL
  2472.     AX = 69FFh
  2473.     DX = CFBFh
  2474.     CX = EFCFh
  2475.     BX = CB00h (magic value)
  2476. Return: ES:BX -> CUBITR.EXE handler for INT 21
  2477.     CX = status
  2478.         2020h successful
  2479.         2222h failed
  2480. Note:    if DX is neither 0000h nor CFBFh on entry, some other code is executed
  2481. SeeAlso: AX=69FFh/DX=0000h
  2482. --------D-216A-------------------------------
  2483. INT 21 U - DOS 4.0+ - COMMIT FILE
  2484.     AH = 6Ah
  2485.     BX = file handle
  2486. Return: CF clear if successful
  2487.         AH = 68h
  2488.     CF set on error
  2489.         AX = error code (06h) (see #1020 at AH=59h/BX=0000h)
  2490. Note:    identical to AH=68h in DOS 5.0-6.0; not known whether this is the case
  2491.       in DOS 4.x
  2492. SeeAlso: AH=68h
  2493. --------D-216B-------------------------------
  2494. INT 21 U - DOS 4.0 internal - IFS IOCTL
  2495.     AH = 6Bh
  2496.     AL = subfunction
  2497.         00h ???
  2498.         DS:SI -> Current Directory Structure???
  2499.         CL = drive (1=A:)
  2500.         01h ???
  2501.         DS:SI -> ???
  2502.         CL = file handle???
  2503.         02h ???
  2504.         DS:SI -> Current Directory Structure???
  2505.         DI = ???
  2506.         CX = drive (1=A:)
  2507. Return: CF set on error
  2508.         AX = error code (see #1020 at INT 21/AH=59h/BX=0000h)
  2509.     CF clear if successful
  2510. Note:    passed through to INT 2F/AX=112Fh with AX on top of stack
  2511. SeeAlso: AH=6Bh"DOS 5",INT 2F/AX=112Fh
  2512. --------D-216B-------------------------------
  2513. INT 21 U - DOS 5+ - NULL FUNCTION
  2514.     AH = 6Bh
  2515. Return: AL = 00h
  2516. Note:    this function does nothing and returns immediately
  2517. SeeAlso: AH=6Bh"DOS 4"
  2518. --------D-216C00-----------------------------
  2519. INT 21 - DOS 4.0+ - EXTENDED OPEN/CREATE
  2520.     AX = 6C00h
  2521.     BL = open mode as in AL for normal open (see also AH=3Dh)
  2522.         bit 7: inheritance
  2523.         bits 4-6: sharing mode
  2524.         bit 3 reserved
  2525.         bits 0-2: access mode
  2526.         100 read-only, do not modify file's last-access time (DOS 7.0)
  2527.     BH = flags
  2528.         bit 6 = auto commit on every write (see also AH=68h)
  2529.         bit 5 = return error rather than doing INT 24h
  2530.     CX = create attribute (see #1111)
  2531.     DL = action if file exists/does not exist (see #1112)
  2532.     DH = 00h (reserved)
  2533.     DS:SI -> ASCIZ file name
  2534. Return: CF set on error
  2535.        AX = error code (see #1020 at AH=59h/BX=0000h)
  2536.     CF clear if successful
  2537.        AX = file handle
  2538.        CX = status (see #1110)
  2539. Notes:    the PC LAN Program only supports existence actions (in DL) of 01h,
  2540.       10h with sharing=compatibility, and 12h
  2541.     DR DOS reportedly does not support this function and does not return
  2542.       an "invalid function call" error when this function is used.
  2543.     the documented bits of BX are stored in the SFT when the file is opened
  2544.       (see #0982,#0983)
  2545. BUG:    this function has bugs (at least in DOS 5.0 and 6.2) when used with
  2546.       drives handled via the network redirector (INT 2F/AX=112Eh):
  2547.         - CX (attribute) is not passed to the redirector if DL=11h,
  2548.         - CX does not return the status, it is returned unchanged because
  2549.           DOS does a PUSH CX/POP CX when calling the redirector.
  2550. SeeAlso: AH=3Ch,AH=3Dh,AX=6C01h,AH=71h,INT 2F/AX=112Eh
  2551.  
  2552. (Table 1110)
  2553. Values for extended open function status:
  2554.  01h    file opened
  2555.  02h    file created
  2556.  03h    file replaced
  2557.  
  2558. Bitfields for file create attribute:
  2559. Bit(s)    Description    (Table 1111)
  2560.  6-15    reserved
  2561.  5    archive
  2562.  4    reserved
  2563.  3    volume label
  2564.  2    system
  2565.  1    hidden
  2566.  0    readonly
  2567.  
  2568. Bitfields for action:
  2569. Bit(s)    Description    (Table 1112)
  2570.  7-4    action if file does not exist
  2571.     0000 fail
  2572.     0001 create
  2573.  3-0    action if file exists
  2574.     0000 fail
  2575.     0001 open
  2576.     0010 replace/open
  2577. --------O-216C01-----------------------------
  2578. INT 21 U - OS/2 v2.0 - "DosOpen2"
  2579.     AX = 6C01h
  2580.     BL = open mode as in AL for normal open (see also AH=3Dh)
  2581.         bit 7: inheritance
  2582.         bits 4-6: sharing mode
  2583.         bit 3 reserved
  2584.         bits 0-2: access mode
  2585.     BH = flags
  2586.         bit 6 = auto commit on every write (see also AH=68h)
  2587.         bit 5 = return error rather than doing INT 24h
  2588.     CX = create attribute (see #1111)
  2589.     DL = action if file exists/does not exist (see #1112)
  2590.     DH = 00h (reserved)
  2591.     DS:SI -> ASCIZ file name
  2592.     ES:DI -> EAOP structure
  2593. Return: CF set on error
  2594.        AX = error code (see #1020 at AH=59h/BX=0000h)
  2595.     CF clear if successful
  2596.        AX = file handle
  2597.        CX = status (see #1110)
  2598. Note:    this function is virtually identical to AX=6C00h, but supports OS/2's
  2599.       extended attributes
  2600. SeeAlso: AX=5704h,AX=6C00h,AH=6Fh"OS/2"
  2601. --------D-216D-------------------------------
  2602. INT 21 U - DOS 5+ ROM - FIND FIRST ROM PROGRAM
  2603.     AH = 6Dh
  2604.     DS:DX -> ASCIZ program name (may contain wildcrds)
  2605. Return: CF clear if found
  2606.         Disk Transfer Area filled with ROM search structure (see #1113)
  2607.     CF set if not found
  2608.         AX = error code
  2609.         0002h name not found in ROM
  2610.         0003h name contains colon or backslash
  2611. Notes:    the '*' wildcard matches all remaining characters in a ROM program's
  2612.       name; any following characters in the search mask are ignored up to
  2613.       another asterisk, which must be matched by an asterisk in the
  2614.       found program's name.
  2615.     the search mask and program names may contain multiple periods
  2616. SeeAlso: AH=1Ah,AH=4Eh,AH=6Eh,AX=6F00h,AX=6F02h
  2617.  
  2618. Format of ROM search structure:
  2619. Offset    Size    Description    (Table 1113)
  2620.  00h 13 BYTEs    ASCIZ name of found ROM program
  2621.  0Dh    DWORD    address at which to resume search (do not modify)
  2622.  11h    var    ASCIZ search mask passed in (do not modify)
  2623. --------O-216D-------------------------------
  2624. INT 21 U - OS/2 v1.x FAPI - "DosMkDir2"
  2625.     AH = 6Dh
  2626.     ???
  2627. Return: ???
  2628. Desc:    create a new directory, with extended attribute information
  2629. Note:    also supported by OS/2 v2.0+ Virtual DOS Machines
  2630. BUG:    does not work under OS/2 v2.0 because MVDM does not translate the
  2631.       real-mode segment pointer in the Extended Attribute structure
  2632.       (see #1013) into a protected-mode selector; use AH=39h followed by
  2633.       AX=5703h instead
  2634. SeeAlso: AH=39h,AX=5702h"OS/2",AX=5703h"OS/2"
  2635. --------O-216D-------------------------------
  2636. INT 21 U - Novell DOS 7 - NOP
  2637.     AH = 6Dh
  2638. Return: AX = 0000h
  2639. Note:    this function invokes the same code as other NOP functions such as
  2640.       AH=18h and AH=61h
  2641. --------D-216E-------------------------------
  2642. INT 21 U - DOS 5+ ROM - FIND NEXT ROM PROGRAM
  2643.     AH = 6Eh
  2644.     Disk Transfer Area contains result of previous FindFirst ROM
  2645.       (see AH=6Dh)
  2646. Return: CF clear if found
  2647.         Disk Transfer Area filled with updated ROM search structure
  2648.           (see #1113)
  2649.     CF set if not found
  2650.         AX = 0012h (no more matches)
  2651. SeeAlso: AH=4Fh,AH=6Dh
  2652. --------O-216E-------------------------------
  2653. INT 21 U - OS/2 v1.x FAPI - "DosEnumAttrib"
  2654.     AH = 6Eh
  2655.     DS:SI -> parameter packet (see #1114)
  2656. Return: CF clear if successful
  2657.         AX = 0000h
  2658.         DS:SI buffer updated
  2659.     CF set on error
  2660.         AX = error code
  2661. Note:    also supported by OS/2 v2.0+ Virtual DOS Machines
  2662. SeeAlso: AX=5703h,AH=6Fh"OS/2",INT 2F/AX=112Dh
  2663.  
  2664. Format of OS/2 DosEnumAttrib parameter packet:
  2665. Offset    Size    Description    (Table 1114)
  2666.  00h    DWORD    reserved (0)
  2667.  04h    DWORD    info level (always 00000001h)
  2668.  08h    DWORD    (call) number of entries requested
  2669.         (ret) actual number of entries returned
  2670.  0Ch    DWORD    length of buffer
  2671.  10h    DWORD    pointer to buffer for results
  2672.  14h    DWORD    number of first entry to return
  2673.  18h    DWORD    -> file handle or ASCIZ pathname
  2674.  1Ch    WORD    flag: 00h = previous field is file handle, 01h = pathname
  2675. --------D-216F00-----------------------------
  2676. INT 21 U - DOS 5+ ROM - GET ROM SCAN START ADDRESS
  2677.     AX = 6F00h
  2678. Return: CF clear
  2679.     AL = 00h
  2680.     BX = current ROM scan starting segment
  2681. SeeAlso: AH=6Dh,AX=6F01h,AX=6F02h
  2682. --------O-216F00-----------------------------
  2683. INT 21 U - OS/2 v1.x FAPI - "DosQMaxEASize" - GET MAXIMUM SIZE OF EXTENDED ATTR
  2684.     AX = 6F00h
  2685.     DS:SI -> DWORD buffer for maximum size of an extended attribute
  2686. Return: CF clear if successful
  2687.         AX = 0000h
  2688.         buffer filled
  2689.     CF set on error
  2690.         AX = error code
  2691. Note:    also supported by OS/2 v2.0+ Virtual DOS Machines
  2692. SeeAlso: AX=5703h,AX=6C01h,AH=6Eh"OS/2"
  2693. --------D-216F01-----------------------------
  2694. INT 21 U - DOS 5+ ROM - SET ROM SCAN START ADDRESS
  2695.     AX = 6F01h
  2696.     BX = new ROM scan starting address
  2697. Return: CF clear
  2698.     AL = 00h
  2699. SeeAlso: AX=6F00h,AX=6F03h
  2700. --------D-216F02-----------------------------
  2701. INT 21 U - DOS 5+ ROM - GET EXCLUSION REGION LIST
  2702.     AX = 6F02h
  2703.     ES:BX -> buffer for exclusion region list (see #1115)
  2704. Return: CF clear
  2705.     AL = 00h
  2706.     ES:BX = 0000h:0000h on error, unchanged if buffer filled
  2707. SeeAlso: AX=6F00h,AX=6F03h
  2708.  
  2709. Format of ROM exclusion region list:
  2710. Offset    Size    Description    (Table 1115)
  2711.  00h    WORD    number of entries
  2712.  02h 2N WORDs    start/end segments of N excluded regions
  2713. --------D-216F03-----------------------------
  2714. INT 21 U - DOS 5+ ROM - SET EXCLUSION REGION LIST
  2715.     AX = 6F03h
  2716.     DS:DX -> new exclusion region list (see #1115)
  2717. Return: CF clear
  2718.     AL = 00h
  2719. Notes:    DOS saves only the pointer and assumes that the contents of the list
  2720.       are never changed, and that regions do not overlap
  2721.     if AL > 03h on entry, DOS returns CF set/AL=01h
  2722. SeeAlso: AX=6F01h,AX=6F02h
  2723. --------D-2170-------------------------------
  2724. INT 21 - MS-DOS 7 (Windows95) - ??? (country-specific?)
  2725.     AH = 70h
  2726.     AL = subfunction
  2727.         00h get ??? info
  2728.         CX = buffer size (3Ah bytes needed)
  2729.         ES:DI -> buffer
  2730.         01h set above info
  2731.         02h set ??? info
  2732.         CX = buffer size >= 26h;
  2733.         first three bytes are skipped, the rest is copied to somewhere
  2734.           in the DOS data segment
  2735. Return: CF clear if successful
  2736.         ES:DI buffer filled (func 00h)
  2737.         returned was (among others) "ENU USA GR"..."AM PM M/d/yy"...
  2738.          "dddd,MMMMdd,yyyy" in the German Preview version, and "US"
  2739.          instead of "GR" in the US build 450 version (with German
  2740.          country setting)
  2741.     CF set on error
  2742.         AX = error code
  2743.         7000h if function not supported
  2744. ----------217070BX6060-----------------------
  2745. INT 21 - PCW Weather Card interface - GET DATA SEGMENT
  2746.     AX = 7070h
  2747.     BX = 6060h
  2748.     CX = 7070h
  2749.     DX = 7070h
  2750.     SI = 7070h
  2751.     DI = 7070h
  2752. Return: AX = segment of data structure (see #1116)
  2753. Notes:    the data structure is at offset 516 from this segment
  2754.     the update byte is at offset 514 from this segment.  Updates are
  2755.       once per second while this byte is nonzero and it is decremented
  2756.       once per second.  While this byte is 0 updates are once per minute.
  2757. SeeAlso: AX=7070h/BX=7070h
  2758.  
  2759. Format of PCW Weather Card data structure:
  2760. Offset    Type    Description    (Table 1116)
  2761.  00h    WORD    hour
  2762.  02h    WORD    minute
  2763.  04h    WORD    second
  2764.  06h    WORD    day
  2765.  08h    WORD    month
  2766.  0Ah    WORD    year
  2767.  0Ch    WORD    ???
  2768.  0Eh    WORD    relative barometric pressure (in 1/100 inches)
  2769.  10h    WORD    ???
  2770.  12h    WORD    ???
  2771.  14h    WORD    temperature 1 (in 1/10 degrees F)
  2772.  16h    WORD    temperature 1 lowest (in 1/10 degrees F)
  2773.  18h    WORD    temperature 1 highest (in 1/10 degrees F)
  2774.  1Ah    WORD    temperature 2 (in 1/10 degrees F)
  2775.  1Ch    WORD    temperature 2 lowest (in 1/10 degrees F)
  2776.  1Eh    WORD    temperature 2 highest (in 1/10 degrees F)
  2777.  20h    WORD    wind speed (in MPH)
  2778.  22h    WORD    average of 60 wind speed samples (in MPH)
  2779.  24h    WORD    highest wind speed (in MPH)
  2780.  26h    WORD    wind chill factor  (in 1/10 degrees F)
  2781.  28h    WORD    lowest wind chill factor (in 1/10 degrees F)
  2782.  2Ah    WORD    ???
  2783.  2Ch    WORD    wind direction (in degrees)
  2784.  2Eh    WORD    accumulated daily rainfall (in 1/10 inches)
  2785.  30h    WORD    accumulated annual rainfall (in 1/10 inches)
  2786. ----------217070BX7070-----------------------
  2787. INT 21 - PCW Weather Card interface - INSTALLATION CHECK
  2788.     AX = 7070h
  2789.     BX = 7070h
  2790.     CX = 7070h
  2791.     DX = 7070h
  2792.     SI = 7070h
  2793.     DI = 7070h
  2794. Return: AX = 0070h
  2795.     BX = 0070h
  2796.     CX = 0070h
  2797.     DX = 0070h
  2798.     SI = 0070h
  2799.     DI = 0070h
  2800. SeeAlso: AX=7070h/BX=6060h,AX=8080h
  2801. --------D-2171-------------------------------
  2802. INT 21 - MS-DOS 7 (Chicago) - LONG FILENAME FUNCTIONS
  2803.     AH = 71h
  2804.     AL = function
  2805.         0Dh reset drive
  2806.         39h create directory
  2807.         3Ah remove directory
  2808.         3Bh set current directory
  2809.         41h delete file
  2810.         43h get file attributes (BL=00h), set file attributes (BL=01h)
  2811.         47h get current directory
  2812.         4Eh find first file
  2813.         4Fh find next file
  2814.         56h move (rename) file
  2815.         6Ch create/open file
  2816. Return: CF set on error
  2817.         AX = error code (see #1020)
  2818.         7100h if function not supported
  2819.     CF clear if successful
  2820.         other registers as for corresponding "old" DOS function
  2821. Notes:    if error 7100h is returned, the old-style function should be called
  2822.     AX=714Eh returns a "search handle" which must be passed to AX=714Fh;
  2823.       when the search is complete, AX=71A1h must be called to terminate
  2824.       the search
  2825. SeeAlso: AH=39h,AH=3Ah,AH=3Bh,AH=41h,AX=4300h,AX=4301h,AX=4304h,AX=4306h
  2826. SeeAlso: AX=4307h,AH=47h,AH=4Eh,AH=4Fh,AH=56h,AH=6Ch,AX=714Eh,AX=714Fh
  2827. SeeAlso: AX=71A0h,AX=71A1h
  2828. --------D-21710D-----------------------------
  2829. INT 21 - Windows95 - RESET DRIVE
  2830.     AX = 710Dh
  2831.     CX = action (see #1117)
  2832.     DX = drive number
  2833. Return: nothing
  2834. SeeAlso: AH=0Dh
  2835.  
  2836. (Table 1117)
  2837. Values for drive reset action:
  2838.  0000h    flush filesystem buffers for drive, and reset drive
  2839.  0001h    flush filesystem buffers and cache for drive, and reset drive
  2840.  0002h    remount DriveSpace volume
  2841. --------D-217139-----------------------------
  2842. INT 21 - Windows95 - LONG FILENAME - MAKE DIRECTORY
  2843.     AX = 7139h
  2844.     DS:DX -> ASCIZ long directory name (including path)
  2845. Return: CF clear if successful
  2846.     CF set on error
  2847.         AX = error code (see #1020)
  2848.         7100h if function not supported
  2849. SeeAlso: AH=39h,AX=713Ah,AX=713Bh
  2850. --------D-21713A-----------------------------
  2851. INT 21 - Windows95 - LONG FILENAME - REMOVE DIRECTORY
  2852.     AX = 713Ah
  2853.     DS:DX -> ASCIZ long name of directory to remove
  2854. Return: CF clear if successful
  2855.     CF set on error
  2856.         AX = error code (see #1020)
  2857.         7100h if function not supported
  2858. SeeAlso: AH=3Ah,AX=7139h
  2859. --------D-21713B-----------------------------
  2860. INT 21 - Windows95 - LONG FILENAME - CHANGE DIRECTORY
  2861.     AX = 713Bh
  2862.     DS:DX -> ASCIZ long name of directory to make current
  2863. Return: CF clear if successful
  2864.     CF set on error
  2865.         AX = error code (see #1020)
  2866.         7100h if function not supported
  2867. SeeAlso: AH=0Eh,AH=3Bh,AX=7139h
  2868. --------D-217141-----------------------------
  2869. INT 21 - Windows95 - LONG FILENAME - DELETE FILE
  2870.     AX = 7141h
  2871.     DS:DX -> ASCIZ long name of file to delete
  2872.     SI = wildcard and attributes flag
  2873.         0000h wildcards are not allowed, and search attributes are
  2874.             ignored
  2875.         0001h wildcards are allowed, and only files with matching
  2876.             names and attributes are deleted
  2877.     CL = search attributes
  2878.     CH = must-match attributes
  2879. Return: CF clear if successful
  2880.     CF set on error
  2881.         AX = error code (see #1020)
  2882.         7100h if function not supported
  2883. SeeAlso: AH=41h
  2884. --------D-217143-----------------------------
  2885. INT 21 - Windows95 - LONG FILENAME - EXTENDED GET/SET FILE ATTRIBUTES
  2886.     AX = 7143h
  2887.     DS:DX -> ASCIZ filename
  2888.     BL = action
  2889.         00h retrieve attributes
  2890.         Return:    CX = file attributes (see #0765)
  2891.         01h set attributes
  2892.         CX = attributes
  2893.         02h get physical size of compressed file
  2894.         Return: DX:AX = actual disk usage of file, in bytes
  2895.         03h set last write date/time
  2896.         DI = new last-write date (see #1006)
  2897.         CX = new last-write time (see #1005)
  2898.         04h get last write date/time
  2899.         Return:    CX = last write time (see #1005)
  2900.             DI = last write date (see #1006)
  2901.         05h set last access date
  2902.         DI = new last-access date (see #1006)
  2903.         06h get last access date
  2904.         Return:    DI = last access date (see #1006)
  2905.         07h set creation date/time
  2906.         DI = new creation date (see #1006)
  2907.         CX = new creation time (see #1005)
  2908.         SI = hundredths (10-millisecond units past time in CX, 0-199)
  2909.         08h get creation date/time
  2910.         Return:    CX = creation time (see #1005)
  2911.             DI = creation date (see #1006)
  2912.             SI = hundredths (10-millisecond units past time in CX)
  2913. Return: CF clear if successful
  2914.     CF set on error
  2915.         AX = error code (see #1020)
  2916.         7100h if function not supported
  2917. SeeAlso: AX=4300h,AX=4301h
  2918. --------D-217147-----------------------------
  2919. INT 21 - Windows95 - LONG FILENAME - GET CURRENT DIRECTORY
  2920.     AX = 7147h
  2921.     DL = drive number (00h = current, 01h = A:, etc.)
  2922.     DS:SI -> buffer for ASCIZ directory name
  2923. Return: CF clear if successful
  2924.     CF set on error
  2925.         AX = error code (see #1020)
  2926.         7100h if function not supported
  2927. Notes:    the returned pathname does not include the drive letter, colon, or
  2928.       leading backslash
  2929.     the provided buffer must be at least as large as the value indicated
  2930.       by AX=71A0h
  2931. SeeAlso: AH=47h,AX=713Bh,AX=71A0h
  2932. --------D-21714E-----------------------------
  2933. INT 21 - Windows95 - LONG FILENAME - FIND FIRST MATCHING FILE
  2934.     AX = 714Eh
  2935.     CL = allowable-attributes mask (see #0765 at AX=4301h)
  2936.           (bits 0 and 5 ignored)
  2937.     CH = required-attributes mask (see #0765)
  2938.     SI = date/time format (see #1118)
  2939.     DS:DX -> ASCIZ filespec (both "*" and "*.*" match any filename)
  2940.     ES:DI -> FindData record (see #1119)
  2941. Return: CF clear if successful
  2942.         AX = filefind handle (needed to continue search)
  2943.         CX = Unicode conversion flags (see #1120)
  2944.     CF set on error
  2945.         AX = error code
  2946.         7100h if function not supported
  2947. Notes:    this function is only available when IFSMgr is running, not under bare
  2948.       MS-DOS 7
  2949.     the application should close the filefind handle with AX=71A1h as soon
  2950.       as it has completed its search
  2951. SeeAlso: AH=4Eh,AX=714Fh,AX=71A1h
  2952.  
  2953. (Table 1118)
  2954. Values for Windows95 date/time format:
  2955.  0000h    use 64-bit file time format
  2956.  0001h    use MS-DOS date/time values (see #1005,#1006) in low double-word of
  2957.       file time QWORD (date is high word, time is low word of double-word)
  2958.  
  2959. Format of Windows95 long filename FindData record:
  2960. Offset    Size    Description    (Table 1119)
  2961.  00h    DWORD    file attributes
  2962.         bits 0-6 standard DOS attributes (see #0765 at INT 21/AX=4301h)
  2963.         bit 8: temporary file
  2964.  04h    QWORD    file creation time (number of 100ns intervals since 1/1/1601)
  2965.  0Ch    QWORD    last access time
  2966.  14h    QWORD    last modification time
  2967.  1Ch    DWORD    file size (high 32 bits)
  2968.  20h    DWORD    file size (low 32 bits)
  2969.  24h  8 BYTEs    reserved
  2970.  2Ch 260 BYTEs    ASCIZ full filename
  2971. 130h 14 BYTEs    ASCIZ short filename (for backward compatibility)
  2972.  
  2973. Bitfields for Windows95 Unicode conversion flags:
  2974. Bit(s)    Description    (Table 1120)
  2975.  0    the returned full filename contains underscores for un-convertable
  2976.       Unicode characters
  2977.  1    the returned short filename contains underscores for un-convertable
  2978.       Unicode characters
  2979. --------D-21714F-----------------------------
  2980. INT 21 - Windows95 - LONG FILENAME - FIND NEXT MATCHING FILE
  2981.     AX = 714Fh
  2982.     BX = filefind handle (from AX=714Eh)
  2983.     SI = date/time format (see #1118)
  2984.     ES:DI -> buffer for FindData record (see #1119)
  2985. Return: CF clear if successful
  2986.         CX = Unicode conversion flags (see #1120)
  2987.     CF set on error
  2988.         AX = error code
  2989.         7100h if function not supported
  2990. Note:    this function is only available when IFSMgr is running, not under bare
  2991.       MS-DOS 7
  2992. SeeAlso: AH=4Eh,AX=714Eh,AX=71A1h
  2993. --------D-217156-----------------------------
  2994. INT 21 - Windows95 - LONG FILENAME - RENAME FILE
  2995.     AX = 7156h
  2996.     DS:DX -> ASCIZ old file or directory name (long names allowed)
  2997.     ES:DI -> ASCIZ new name (long names allowed)
  2998. Return: CF clear if successful
  2999.     CF set on error
  3000.         AX = error code
  3001.         7100h if function not supported
  3002. Note:    the file may be renamed into a different directory, but not across
  3003.       disks
  3004. SeeAlso: AH=56h,AX=7141h
  3005. --------D-217160CL00-------------------------
  3006. INT 21 - Windows95 - LONG FILENAME - "TRUENAME" - CANONICALIZE PATH
  3007.     AX = 7160h
  3008.     CL = 00h
  3009.     CH = SUBST expansion flag
  3010.         00h return a path containing true path for a SUBSTed drive letter
  3011.         80h return a path containing the SUBSTed drive letter
  3012.     DS:SI -> ASCIZ filename or path (either long name or short name)
  3013.     ES:DI -> 261-byte buffer for canonicalized name
  3014. Return: CF set on error
  3015.         AX = error code
  3016.         02h invalid component in directory path or drive letter only
  3017.         03h malformed path or invalid drive letter
  3018.         ES:DI buffer unchanged
  3019.     CF clear if successful
  3020.         ES:DI buffer filled with fully qualified name
  3021.         AX destroyed
  3022. Desc:    determine the canonical name of the specified filename or path,
  3023.       corresponding to the undocumented TRUENAME command in COMMAND.COM
  3024. Note:    if a complete path is given, the result will be a short-form complete
  3025.       path; otherwise, the given relative path is appended to the
  3026.       short-form current directory name, '.'/'..'/'...'/etc. are resolved,
  3027.       and the final result uppercased without converting any remaining
  3028.       long-form names to short-form
  3029. SeeAlso: AH=60h,AX=7160h/CL=01h
  3030. --------D-217160CL01-------------------------
  3031. INT 21 - Windows95 - LONG FILENAME - GET SHORT (8.3) FILENAME FOR FILE
  3032.     AX = 7160h
  3033.     CL = 01h
  3034.     CH = SUBST expansion flag
  3035.         00h return a path containing true path for a SUBSTed drive letter
  3036.         80h return a path containing the SUBSTed drive letter
  3037.     DS:SI -> ASCIZ long filename or path
  3038.     ES:DI -> 67-byte buffer for short filename
  3039. Return: CF set on error
  3040.         AX = error code
  3041.         02h invalid component in directory path or drive letter only
  3042.         03h malformed path or invalid drive letter
  3043.         ES:DI buffer unchanged
  3044.     CF clear if successful
  3045.         ES:DI buffer filled with equivalent short filename (full path,
  3046.           even if relative path given, and all uppercase)
  3047. Note:    this call returns the short name for any long-filename portions of
  3048.       the provided pathname or filename
  3049. SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=02h
  3050. --------D-217160CL02-------------------------
  3051. INT 21 - Windows95 - LONG FILENAME - GET CANONICAL LONG FILENAME OR PATH
  3052.     AX = 7160h
  3053.     CL = 02h
  3054.     CH = SUBST expansion flag
  3055.         00h return a path containing true path for a SUBSTed drive letter
  3056.         80h return a path containing the SUBSTed drive letter
  3057.     DS:SI -> ASCIZ short filename or path
  3058.     ES:DI -> 261-byte buffer for canonicalized long name
  3059. Return: CF set on error
  3060.         AX = error code
  3061.         02h invalid component in directory path or drive letter only
  3062.         03h malformed path or invalid drive letter
  3063.         ES:DI buffer unchanged
  3064.     CF clear if successful
  3065.         ES:DI buffer filled with qualified long name (can contain
  3066.           lowercase letters)
  3067. Desc:    determine the canonical name of the specified filename or path,
  3068.       corresponding to the undocumented TRUENAME command in COMMAND.COM
  3069. Note:    this call returns the short name for any long-filename portions of
  3070.       the provided pathname or filename
  3071. BUG:    even though the maximum length of a complete long pathname is 260
  3072.       characters, Windows95 returns CF set/AX=0003h even if the file
  3073.       exists whenever the full pathname is more than 255 characters
  3074. SeeAlso: AH=60h,AX=7160h/CL=00h,AX=7160h/CL=01h
  3075. --------D-21716C-----------------------------
  3076. INT 21 - Windows95 - LONG FILENAME - CREATE OR OPEN FILE
  3077.     AX = 716Ch
  3078.     BX = access mode and sharing flags (see #1122,also AX=6C00h)
  3079.     CX = attributes
  3080.     DX = action (see #1121)
  3081.     DS:SI -> ASCIZ filename
  3082.     DI = alias hint (number to append to short filename for disambiguation)
  3083. Return: CF clear if successful
  3084.         AX = file handle
  3085.         CX = action taken
  3086.         0001h file opened
  3087.         0002h file created
  3088.         0003h file replaced
  3089.     CF set on error
  3090.         AX = error code (see #1020)
  3091.         7100h if function not supported
  3092. SeeAlso: AX=6C00h,AX=7141h,AX=7156h,AX=71A9h
  3093.  
  3094. Bitfields for Windows95 long-name open action:
  3095. Bit(s)    Description    (Table 1121)
  3096.  0    open file (fail if file does not exist)
  3097.  1    truncate file if it already exists (fail if file does not exist)
  3098.  4    create new file if file does not already exist (fail if exists)
  3099. Note:    the only valid combinations of multiple flags are bits 4&0 and 4&1
  3100.  
  3101. Bitfields for Windows95 file access/sharing modes:
  3102. Bit(s)    Description    (Table 1122)
  3103.  2-0    file access mode
  3104.     000 read-only
  3105.     001 write-only
  3106.     010 read-write
  3107.     100 read-only, do not modify file's last-access time
  3108.  6-4    file sharing modes
  3109.  7    no-inherit flag
  3110.  8    do not buffer data (requires that all reads/writes be exact physical
  3111.       sectors)
  3112.  9    do not compress file even if volume normally compresses files
  3113.  10    use alias hint in DI as numeric tail for short-name alias
  3114.  12-11    unused??? (0)
  3115.  13    return error code instead of generating INT 24h if critical error
  3116.       while opening file
  3117.  14    commit file after every write operation
  3118. SeeAlso: #0749
  3119. --------D-2171A0-----------------------------
  3120. INT 21 - Windows95 - LONG FILENAME - GET VOLUME INFORMATION
  3121.     AX = 71A0h
  3122.     DS:DX -> ASCIZ root name (e.g. "C:\")
  3123.         or
  3124.     DS:SI -> ASCIZ root name (e.g. "C:\")
  3125.     ES:DI -> buffer for file system name
  3126.     CX = size of ES:DI buffer
  3127. Return: CF clear if successful
  3128.         BX = file system flags (see #1123)
  3129.         CX = maximum length of file name [usually 255]
  3130.         DX = maximum length of path [usually 260]
  3131.         ES:DI buffer filled (ASCIZ, e.g. "FAT","NTFS","CDFS")
  3132.     CF set on error
  3133.         AX = error code
  3134.         7100h if function not supported
  3135. Notes:    for the file system name buffer, 32 bytes should be sufficient; that's
  3136.      what is used in some sample code by Walter Oney from Microsoft.
  3137.     this function accesses the disk the first time it is called
  3138.     I have received conflicting information about this call -- some says
  3139.       DS:SI, some DS:DX....     Can anyone tell me for certain?
  3140. SeeAlso: AX=714Eh,AX=7160h/CL=00h
  3141.  
  3142. Bitfields for long filename volume information flags:
  3143. Bit(s)    Description    (Table 1123)
  3144.  0    searches are case sensitive
  3145.  1    preserves case in directory entries
  3146.  2    uses Unicode characters in file and directory names
  3147.  3-13    reserved (0)
  3148.  14    supports DOS long filename functions
  3149.  15    volume is compressed
  3150. --------D-2171A1-----------------------------
  3151. INT 21 - Windows95 - LONG FILENAME - "FindClose" - TERMINATE DIRECTORY SEARCH
  3152.     AX = 71A1h
  3153.     BX = filefind handle (from AX=714Eh)
  3154. Return: CF clear if successful
  3155.     CF set on error
  3156.        AX = error code
  3157.         7100h if function not supported
  3158. Notes:    this function must be called after starting a search with AX=714Eh,
  3159.       to indicate that the search handle returned by that function will
  3160.       no longer be used
  3161.     this function is only available when IFSMgr is running, not under bare
  3162.       MS-DOS 7
  3163. SeeAlso: AH=4Eh,AX=714Eh,AX=714Fh
  3164. --------D-2171A2-----------------------------
  3165. INT 21 U - Windows95 - internal
  3166.     AX = 71A2h
  3167.     ???
  3168. Return: ???
  3169. Note:    documented as "for internal use by Windows 95 only"
  3170. --------D-2171A3-----------------------------
  3171. INT 21 U - Windows95 - internal
  3172.     AX = 71A3h
  3173.     ???
  3174. Return: ???
  3175. Note:    documented as "for internal use by Windows 95 only"
  3176. --------D-2171A4-----------------------------
  3177. INT 21 U - Windows95 - internal
  3178.     AX = 71A4h
  3179.     ???
  3180. Return: ???
  3181. Note:    documented as "for internal use by Windows 95 only"
  3182. --------D-2171A5-----------------------------
  3183. INT 21 U - Windows95 - internal
  3184.     AX = 71A5h
  3185.     ???
  3186. Return: ???
  3187. Note:    documented as "for internal use by Windows 95 only"
  3188. --------D-2171A6-----------------------------
  3189. INT 21 - Windows95 - LONG FILENAME - GET FILE INFO BY HANDLE
  3190.     AX = 71A6h
  3191.     BX = file handle
  3192.     DS:DX -> buffer for file information (see #1124)
  3193.     CF set
  3194. Return: CF clear if successful
  3195.         file information record filled
  3196.     CF set on error
  3197.         AX = error code
  3198.         7100h if function not supported
  3199. SeeAlso: AX=71A7h/BL=00h
  3200.  
  3201. Format of Windows95 file information:
  3202. Offset    Size    Description    (Table 1124)
  3203.  00h    DWORD    file attributes
  3204.  04h    QWORD    creation time (0 = unsupported)
  3205.  0Ch    QWORD    last access time (0 = unsupported)
  3206.  14h    QWORD    last write time
  3207.  1Ch    DWORD    volume serial number
  3208.  20h    DWORD    high 32 bits of file size
  3209.  24h    DWORD    low 32 bits of file size
  3210.  28h    DWORD    number of links to file
  3211.  2Ch    DWORD    unique file identifier (high 32 bits)
  3212.  30h    DWORD    unique file identifier (low 32 bits)
  3213. Note:    the file identifer and volume serial number together uniquely identify
  3214.       a file while it is open; the identifier may change when the system
  3215.       is restarted or the file is first opened
  3216. --------D-2171A7BL00-------------------------
  3217. INT 21 - Windows95 - LONG FILENAME - FILE TIME TO DOS TIME
  3218.     AX = 71A7h
  3219.     BL = 00h
  3220.     DS:SI -> QWORD file time
  3221. Return: CF clear if successful
  3222.         CX = DOS time (see #1005)
  3223.         DX = DOS date (see #1006)
  3224.         BH = hundredths (10-millisecond units past time in CX)
  3225.     CF set on error
  3226.         AX = error code
  3227.         7100h if function not supported
  3228. Desc:    convert Win95 64-bit file time (UTC) into DOS-style date and time
  3229.       (local timezone)
  3230. Note:    the conversion fails if the file time's value is outside the range
  3231.       1/1/1980 and 12/31/2107
  3232. SeeAlso: AX=71A6h,AX=71A7h/BL=01h
  3233. --------D-2171A7BL01-------------------------
  3234. INT 21 - Windows95 - LONG FILENAME - DOS TIME TO FILE TIME
  3235.     AX = 71A7h
  3236.     BL = 01h
  3237.     CX = DOS time (see #1005)
  3238.     DX = DOS date (see #1006)
  3239.     BH = hundredths (10-millisecond units past time in CX)
  3240.     ES:DI -> buffer for QWORD file time
  3241. Return: CF clear if successful
  3242.         ES:DI buffer filled
  3243.     CF set on error
  3244.         AX = error code
  3245.         7100h if function not supported
  3246. Desc:    convert DOS-style date and time (local timezone) into Win95 64-bit
  3247.       file time (UTC)
  3248. SeeAlso: AX=71A6h,AX=71A7h/BL=00h
  3249. --------D-2171A8-----------------------------
  3250. INT 21 - Windows95 - LONG FILENAME - GENERATE SHORT FILENAME
  3251.     AX = 71A8h
  3252.     DS:SI -> ASCIZ long filename (no path allowed!)
  3253.     ES:DI -> buffer for ASCIZ short filename
  3254.     DH = short name's format
  3255.         00h 11-char directory entry/FCB filename format
  3256.         01h DOS 8.3
  3257.     DL = character sets
  3258.         bits 7-4: short name's character set (see #1125)
  3259.         bits 3-0: long name's character set (see #1125)
  3260. Return: CF clear if successful
  3261.         ES:DI buffer filled
  3262.     CF set on error
  3263.         AX = error code
  3264.         7100h if function not supported
  3265. Note:    this function uses the same algorithm as the filesystem except that
  3266.       the returned name never has a numeric tail for disambiguation
  3267. SeeAlso: AX=7160h/CL=00h,AX=7160h/CL=02h,AX=71A7h/BL=00h
  3268.  
  3269. (Table 1125)
  3270. Values for Windows95 filename character set:
  3271.  00h    Windows ANSI
  3272.  01h    current OEM character set
  3273.  02h    Unicode
  3274. --------D-2171A9-----------------------------
  3275. INT 21 - Windows95 - LONG FILENAME - SERVER CREATE OR OPEN FILE
  3276.     AX = 71A9h
  3277.     BX = access mode and sharing flags (see #1122,also AX=6C00h)
  3278.     CX = attributes
  3279.     DX = action (see #1121)
  3280.     DS:SI -> ASCIZ filename
  3281.     DI = alias hint (number to append to short filename for disambiguation)
  3282. Return: CF clear if successful
  3283.         AX = global file handle
  3284.         CX = action taken
  3285.         0001h file opened
  3286.         0002h file created
  3287.         0003h file replaced
  3288.     CF set on error
  3289.         AX = error code (see #1020)
  3290.         7100h if function not supported
  3291. Note:    for use by real-mode servers only
  3292. SeeAlso: AX=6C00h,AX=716Ch
  3293. --------D-2171AABH00-------------------------
  3294. INT 21 - Windows95 - LONG FILENAME - CREATE SUBST
  3295.     AX = 71AAh
  3296.     BH = 00h
  3297.     BL = drive number (00h = default, 01h = A:, etc.)
  3298.     DS:DX -> ASCIZ pathname to associate with drive letter
  3299. Return: CF clear if successful
  3300.     CF set on error
  3301.         AX = error code (see #1020)
  3302.         7100h if function not supported
  3303. SeeAlso: AX=71AAh/BH=01h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#0984
  3304. --------D-2171AABH01-------------------------
  3305. INT 21 - Windows95 - LONG FILENAME - TERMINATE SUBST
  3306.     AX = 71AAh
  3307.     BH = 01h
  3308.     BL = drive number (01h = A:, etc.)
  3309. Return: CF clear if successful
  3310.     CF set on error
  3311.         AX = error code (see #1020)
  3312.         7100h if function not supported
  3313. Note:    the specified drive number may not be 00h (default), and presumably not
  3314.       the current drive either
  3315. SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=02h,INT 2F/AX=1000h,#0984
  3316. --------D-2171AABH02-------------------------
  3317. INT 21 - Windows95 - LONG FILENAME - QUERY SUBST
  3318.     AX = 71AAh
  3319.     BH = 02h
  3320.     BL = drive number (01h = A:, etc.)
  3321.     DS:DX -> buffer for ASCIZ pathname associated with drive letter
  3322. Return: CF clear if successful
  3323.         DS:DX buffer filled
  3324.     CF set on error
  3325.         AX = error code (see #1020)
  3326.         7100h if function not supported
  3327. Note:    the specified drive number may not be 00h (default drive)
  3328. SeeAlso: AX=71AAh/BH=00h,AX=71AAh/BH=01h,INT 2F/AX=1000h,#0984
  3329. --------D-2172-------------------------------
  3330. INT 21 - "Chicago" - LFN-FindClose
  3331.     AH = 72h
  3332.     details not available
  3333. Note:    this function was present in beta versions of Windows95, but is
  3334.       probably not present in the release version
  3335. SeeAlso: AX=71A1h
  3336. --------D-2173-------------------------------
  3337. INT 21 - MS-DOS 7 (Windows95) - DRIVE LOCKING ???
  3338.     AH = 73h
  3339.     DL = drive (0=current, 1=A:, etc.)
  3340.     AL = subfunction
  3341.         00h get ???
  3342.         CL =
  3343.             00h: drive flag???
  3344.             01h: ??? flag
  3345.         01h set ???
  3346.         CL =
  3347.             00h: drive flag???
  3348.             set to 06h if CH bit 1 =1, else to 00h
  3349.             01h: ??? flag
  3350.             set flag bit 3 to bit 3 of CH
  3351. Return: CF clear if successful
  3352.         for AL=00h:
  3353.         AL = value of CL on entry
  3354.         for CL=00h: AH = flag and 06h (i.e. bits 1 and 2 used)
  3355.         for CL=01h: AH = flag and 08h (i.e. bit 3 used)
  3356.         (flag being taken from a table of bytes)
  3357.     CF set on error
  3358.         AX = error code
  3359.         7300h if function not supported
  3360. --------D-217302-----------------------------
  3361. INT 21 - MS-DOS 7 (Windows95) - FAT32 - "Get_ExtDPB"
  3362.     AX = 7302h
  3363.     ???
  3364. Return: ???
  3365.     details to follow
  3366. SeeAlso: AX=7303h,AX=7304h,AH=1Fh,AH=32h
  3367. --------D-217303-----------------------------
  3368. INT 21 - MS-DOS 7 (Windows95) - FAT32 - "Get_ExtFreeSpace"
  3369.     AX = 7303h
  3370.     ???
  3371. Return: ???
  3372.     details to follow
  3373. SeeAlso: AX=7302h,AX=7304h,AX=7305h,AH=36h
  3374. --------D-217304-----------------------------
  3375. INT 21 - MS-DOS 7 (Windows95) - FAT32 - "Set_DPBForFormat"
  3376.     AX = 7304h
  3377.     ???
  3378. Return: ???
  3379.     details to follow
  3380. SeeAlso: AX=7302h,AX=7303h,AX=7305h
  3381. --------D-217305-----------------------------
  3382. INT 21 - MS-DOS 7 (Windows95) - FAT32 - "Ext_ABSDiskReadWrite"
  3383.     AX = 7305h
  3384.     ???
  3385. Return: ???
  3386.     details to follow
  3387. SeeAlso: AX=7302h,AX=7304h,INT 25,INT 26
  3388. --------v-217575-----------------------------
  3389. INT 21 - VIRUS - "LEGO" -INSTALLATION CHECK
  3390.     AX = 7575h
  3391. Return: AX = 4321h if resident
  3392. SeeAlso: AX=6969h,AH=76h"VIRUS"
  3393. --------v-2176-------------------------------
  3394. INT 21 - VIRUS - "Klaeren"/"Hate" - INSTALLATION CHECK
  3395.     AH = 76h
  3396. Return: AL = 48h if resident
  3397. SeeAlso: AX=7575h,AX=7700h"VIRUS"
  3398. --------v-217700-----------------------------
  3399. INT 21 - VIRUS - "Growing Block" - INSTALLATION CHECK
  3400.     AX = 7700h
  3401. Return: AX = 0920h if resident
  3402. SeeAlso: AH=76h,AX=7BCEh,AH=7Fh
  3403. --------V-217734-----------------------------
  3404. INT 21 U - SCROLLit v1.7 - INSTALLATION CHECK
  3405.     AX = 7734h
  3406. Return: DX = 3477h if installed
  3407.         AX = segment of resident code
  3408. Program: ScrollIt is a shareware backscroll utility by Bromfield Software
  3409.       Products
  3410. --------U-217761-----------------------------
  3411. INT 21 - WATCH.COM v3.2+ - INSTALLATION CHECK
  3412.     AX = 7761h ('wa')
  3413. Return: AX = 6177h
  3414. Note:    WATCH.COM is part of the "TSR" package by TurboPower Software
  3415. SeeAlso: INT 16/AX=7761h
  3416. --------v-217BCE-----------------------------
  3417. INT 21 - VIRUS - "Whisper"/"Taipan" - INSTALLATION CHECK
  3418.     AX = 7BCEh
  3419. Return: AX = 7BCEh if resident (???)
  3420. SeeAlso: AX=5454h"VIRUS",AX=7700h,AX=7BCFh,AH=7Fh"VIRUS"
  3421. --------v-217BCF-----------------------------
  3422. INT 21 - VIRUS - "Tai-Pan.666"/"Doom II Death" - INSTALLATION CHECK
  3423.     AX = 7BCFh
  3424. Return: AX = 7BCFh if resident
  3425. SeeAlso: AX=7BCEh"VIRUS",AH=7Dh"VIRUS"
  3426. --------v-217D-------------------------------
  3427. INT 21 - VIRUS - "OffSpring" - INSTALLATION CHECK
  3428.     AH = 7Dh
  3429. Return: AH = FAh if installed
  3430. SeeAlso: AX=7BCFh"VIRUS",AH=7Fh"VIRUS"
  3431. --------v-217F-------------------------------
  3432. INT 21 - VIRUS - "Squeaker","ASeXual" - INSTALLATION CHECK
  3433.     AH = 7Fh
  3434. Return: AH = 80h if resident
  3435. SeeAlso: AX=7BCEh,AH=83h"VIRUS"
  3436. --------D-2180-------------------------------
  3437. INT 21 - European MS-DOS 4.0 - "AEXEC" - EXECUTE PROGRAM IN BACKGROUND
  3438.     AH = 80h
  3439.     CX = mode
  3440.         0000h place child in zombie mode on exit to preserve exit code
  3441.         0001h discard child process and exit code on termination
  3442.     DS:DX -> ASCIZ full program name
  3443.     ES:BX -> parameter block (as for AX=4B00h)
  3444. Return: CF clear if successful
  3445.         AX = Command Subgroup ID (CSID)
  3446.     CF set on error
  3447.         AX = error code (see #1020 at AH=59h/BX=0000h)
  3448. Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
  3449.       by several other European OEMs; its release falls between mainstream
  3450.       versions 3.2 and 3.3
  3451. Desc:    asynchronously execute a program, creating a new process for it
  3452. Notes:    this function is called by the DETACH command
  3453.     there is a system-wide limit of 32 processes
  3454.     the CSID is used to identify all processes that have been spawned by
  3455.       a given process, whether directly or indirectly
  3456.     programs to be run in the background must use the new executable format
  3457.       (see #0937 at AH=4Bh)
  3458.     background processes may only perform asynchronous (background) EXECs,
  3459.       either this function or AX=4B04h
  3460.     background processes may execute INT 11, INT 12, INT 21, INT 2A, and
  3461.       INT 2F at any time; they may execute INT 10 and INT 16 only while
  3462.       they have opened a popup screen via INT 2F/AX=1401h; no other
  3463.       interrupts may be executed from the background
  3464.     background processes may not use drive B: or overlay their code
  3465.       segments
  3466.     see AX=8700h for an installation check
  3467.     the "NE" new executable format made its first appearance in European
  3468.       MS-DOS 4.0
  3469. SeeAlso: AH=4Bh,AH=87h,INT 2F/AX=1400h"POPUP"
  3470. ----------218080-----------------------------
  3471. INT 21 - PCW Weather Card interface - UNINSTALL PCW.COM AND FREE MEMORY
  3472.     AX = 8080h
  3473. Return: ???
  3474. SeeAlso: AX=7070h/BX=7070h
  3475. --------D-2181-------------------------------
  3476. INT 21 - European MS-DOS 4.0 - "FREEZE" - STOP A PROCESS
  3477.     AH = 81h
  3478.     BX = flag (00h freeze command subtree, 01h only specified process)
  3479.     CX = Process ID of head of command subtree
  3480. Return: CF clear if successful
  3481.     CF set on error
  3482.         AX = error code (no such process)
  3483. Desc:    temporarily suspend a process or a process and all of its children
  3484. Note:    if BX=0001h, this call will not return until the process is actually
  3485.       frozen, which may not be until after it unblocks from an I/O
  3486.       operation
  3487. SeeAlso: AH=82h,AH=89h,AX=8E00h,INT 15/AX=101Dh
  3488. --------D-2182-------------------------------
  3489. INT 21 - European MS-DOS 4.0 - "RESUME" - RESTART A PROCESS
  3490.     AH = 82h
  3491.     BX = flag (00h resume command subtree, 01h only specified process)
  3492.     CX = Process ID of head of command subtree
  3493. Return: CF clear if successful
  3494.     CF set on error
  3495.         AX = error code (no such process)
  3496. Desc:    restart a previously-suspended process or a process and all of its
  3497.       children
  3498. SeeAlso: AH=81h,INT 15/AX=101Eh
  3499. --------D-2183-------------------------------
  3500. INT 21 - European MS-DOS 4.0 - "PARTITION" - GET/SET FOREGROUND PARTITION SIZE
  3501.     AH = 83h
  3502.     AL = function
  3503.         00h get size
  3504.         01h set new size
  3505.         BX = new size in paragraphs
  3506. Return: CF clear if successful
  3507.         BX = current size (function 00h) or old size (function 01h)
  3508.     CF set on error
  3509.         AX = error code (01h,07h,0Dh)(see #1020 at AH=59h/BX=0000h)
  3510. Desc:    specify or determine how much memory may be allocated by the foreground
  3511.       process
  3512. Note:    if the partition size is set to 0000h, no partition management is done
  3513.       and all memory allocation is compatible with DOS 3.2.
  3514.     the partition size can be changed regardless of what use is being made
  3515.       of the changed memory; subsequent allocations will follow the
  3516.       partition rules (foreground processes may allocate only foreground
  3517.       memory; background processes allocate background memory first, then
  3518.       foreground memory)
  3519. SeeAlso: AH=48h,AH=4Ah
  3520. --------v-2183-------------------------------
  3521. INT 21 - VIRUS - "SVC" - INSTALLATION CHECK
  3522.     AH = 83h
  3523. Return: DX = 1990h if resident
  3524. SeeAlso: AH=76h,AH=84h"VIRUS"
  3525. --------v-2184-------------------------------
  3526. INT 21 - VIRUS - "SVC 5.0" or "SVC 6.0" - INSTALLATION CHECK
  3527.     AH = 84h
  3528. Return: DX = 1990h if resident
  3529.         BH = version number (major in high nybble, minor in low)
  3530. SeeAlso: AH=83h"VIRUS",AH=89h"VIRUS"
  3531. --------D-218400-----------------------------
  3532. INT 21 - European MS-DOS 4.0 - "CREATMEM" - CREATE A SHARED MEMORY AREA
  3533.     AX = 8400h
  3534.     BX = size in bytes (0000h = 65536)
  3535.     CX = flags
  3536.         bit 6: zero-initialize segment
  3537.     DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
  3538. Return: CF clear if successful
  3539.         AX = segment address of shared memory global object
  3540.     CF set on error
  3541.         AX = error code (06h,08h) (see #1020 at AH=59h/BX=0000h)
  3542. Desc:    create an area of memory which may be accessed by multiple processes
  3543. Notes:    shared memory objects are created as special files (thus the
  3544.       restriction on the name)
  3545.     on successful creation, the reference count is set to 1
  3546. SeeAlso: AX=8401h,AX=8402h,INT 15/AX=DE19h
  3547. --------D-218401-----------------------------
  3548. INT 21 - European MS-DOS 4.0 - "GETMEM" - OBTAIN ACCESS TO SHARED MEMORY AREA
  3549.     AX = 8401h
  3550.     CX = flags
  3551.         bit 7: writable segment (ignored by MS-DOS 4.0)
  3552.     DS:DX -> ASCIZ name (must begin with "\SHAREMEM\")
  3553. Return: CF clear if successful
  3554.         AX = segment address of shared memory global object
  3555.         CX = size in bytes
  3556.     CF set on error
  3557.         AX = error code (invalid name)
  3558. Desc:    get address of a previously-created area of memory which may be
  3559.       accessed by multiple processes
  3560. Note:    this call increments the reference count for the shared memory area
  3561. SeeAlso: AX=8400h,AX=8402h
  3562. --------D-218402-----------------------------
  3563. INT 21 - European MS-DOS 4.0 - "RELEASEMEM" - FREE SHARED MEMORY AREA
  3564.     AX = 8402h
  3565.     BX = handle (segment address of shared memory object)
  3566. Return: CF clear if successful
  3567.     CF set on error
  3568.         AX = error code (no such name)
  3569. Desc:    indicate that the specified area of shared memory will no longer be
  3570.       used by the caller
  3571. Note:    the reference count is decremented and the shared memory area is
  3572.       deallocated if the new reference count is zero
  3573. SeeAlso: AX=8400h,AX=8401h,INT 15/AX=DE19h
  3574. --------D-2185-------------------------------
  3575. INT 21 U - European MS-DOS 4.0 - ???
  3576.     AH = 85h
  3577.     ???
  3578. Return: ???
  3579. --------D-2186-------------------------------
  3580. INT 21 - European MS-DOS 4.0 - "SETFILETABLE" - INSTALL NEW FILE HANDLE TABLE
  3581.     AH = 86h
  3582.     BX = total number of file handles in new table
  3583. Return: CF clear if successful
  3584.     CF set on error
  3585.         AX = error code (06h,08h) (see #1020 at AH=59h/BX=0000h)
  3586. Desc:    adjust the size of the per-process open file table, thus raising or
  3587.       lowering the limit on the number of files the caller can open
  3588.       simultaneously
  3589. Notes:    any currently-open files are copied to the new table
  3590.     if the table is increased beyond the default 20 handles, only the
  3591.       first 20 will be inherited by child processes
  3592.     error 06h is returned if the requested number of handles exceeds
  3593.       system limits or would require closing currently-open files
  3594. SeeAlso: AH=26h,AH=67h
  3595. --------D-2187-------------------------------
  3596. INT 21 - European MS-DOS 4.0 - "GETPID" - GET PROCESS IDENTIFIER
  3597.     AH = 87h
  3598. Return: AX = PID
  3599.     BX = parent process's PID
  3600.     CX = Command Subgroup ID (CSID)
  3601. Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
  3602.       by several other European OEMs; its release falls between mainstream
  3603.       versions 3.2 and 3.3
  3604. Desc:    determine an identifier by which to access the calling process
  3605. Notes:    called by MS C v5.1 getpid() function
  3606.     this function apparently must return AX=0001h for INT 21/AH=80h to
  3607.       succeed
  3608.     one possible check for European MS-DOS 4.0 is to issue this call with
  3609.       AL=00h and check whether AL is nonzero on return
  3610. SeeAlso: AH=30h,AH=62h,AH=80h
  3611. Index:    installation check;European MS-DOS 4.0
  3612. --------D-2188-------------------------------
  3613. INT 21 U - European MS-DOS 4.0 - ???
  3614.     AH = 88h
  3615.     ???
  3616. Return: ???
  3617. SeeAlso: AH=87h
  3618. --------D-2189-------------------------------
  3619. INT 21 - European MS-DOS 4.0 - SLEEP
  3620.     AH = 89h
  3621.     CX = time in milliseconds or 0000h to give up time slice
  3622. Return: CF clear if successful
  3623.         CX = 0000h
  3624.     CF set on error
  3625.         AX = error code (interrupted system call)
  3626.         CX = sleep time remaining
  3627. Desc:    suspend the calling process for the specified duration
  3628. Notes:    the sleep interval is rounded up to the next higher increment of the
  3629.       scheduler clock, and may be extended further if other processes are
  3630.       running
  3631.     this call may be interrupted by signals (see AH=8Dh)
  3632.     reportedly called by Microsoft C 4.0 startup code
  3633.     background processes have higher priority than the foreground process,
  3634.       and should thus periodically yield the CPU
  3635. SeeAlso: AH=81h,INT 15/AX=1000h,INT 2F/AX=1680h,INT 7A/BX=000Ah
  3636. --------v-2189-------------------------------
  3637. INT 21 - VIRUS - "Vriest" - INSTALLATION CHECK
  3638.     AH = 89h
  3639. Return: AX = 0123h if resident
  3640. SeeAlso: AH=84h"VIRUS",AH=90h"VIRUS"
  3641. --------D-218A-------------------------------
  3642. INT 21 - European MS-DOS 4.0 - "CWAIT" - WAIT FOR CHILD TO TERMINATE
  3643.     AH = 8Ah
  3644.     BL = range (00h command subtree, 01h any child)
  3645.     BH = suspend flag
  3646.         00h suspend if children exist but none are dead
  3647.         01h return if no dead children
  3648.     CX = Process ID of head of command subtree
  3649. Return: CF clear if successful
  3650.         AH = termination type (see #1126)
  3651.         AL = return code from child or aborting signal
  3652.         BX = PID of child (0000h if no dead children)
  3653.     CF set on error
  3654.         AX = error code (no child,interrupted system call)
  3655. Desc:    get return code from an asynchronously-executed child program,
  3656.       optionally waiting if no return code is available
  3657. SeeAlso: AH=4Bh,AH=4Dh,AH=80h,AH=8Dh
  3658.  
  3659. (Table 1126)
  3660. Values for termination type:
  3661.  00h    normal termination
  3662.  01h    aborted by Control-C
  3663.  02h    aborted by I/O error
  3664.  03h    terminate and stay resident
  3665.  04h    aborted by signal
  3666.  05h    aborted by program error
  3667. --------D-218B-------------------------------
  3668. INT 21 U - European MS-DOS 4.0 - ???
  3669.     AH = 8Bh
  3670.     ???
  3671. Return: ???
  3672. SeeAlso: AH=87h
  3673. --------D-218C-------------------------------
  3674. INT 21 - European MS-DOS 4.0 - SET SIGNAL HANDLER
  3675.     AH = 8Ch
  3676.     AL = signal number (see #1127)
  3677.     BL = action (see #1128)
  3678.     DS:DX -> signal handler (see #1129)
  3679. Return: CF clear if successful
  3680.         AL = previous action
  3681.         ES:BX -> previous signal handler
  3682.     CF set on error
  3683.         AX = error code (01h,invalid SigNumber or Action)
  3684.           (see #1020 at AH=59h/BX=0000h)
  3685. Desc:    set the routine which will be invoked on a number of exceptional
  3686.       conditions
  3687. Note:    all signals will be sent to the most recently installed handler
  3688. SeeAlso: AH=8Dh
  3689.  
  3690. (Table 1127)
  3691. Values for European MS-DOS 4.0 signal number:
  3692.  01h    SIGINTR        Control-C or user defined interrupt key
  3693.  08h    SIGTERM        program termination
  3694.  09h    SIGPIPE        broken pipe
  3695.  0Dh    SIGUSER1    reserved for user definition
  3696.  0Eh    SIGUSER2    reserved for user definition
  3697.  
  3698. (Table 1128)
  3699. Values for signal action:
  3700.  00h    SIG_DFL        terminate process on receipt
  3701.  01h    SIG_IGN        ignore signal
  3702.  02h    SIG_GET        signal is accepted
  3703.  03h    SIG_ERR        sender gets error
  3704.  04h    SIG_ACK        acknowledge received signal and clear it, but don't
  3705.               change current setting
  3706.  
  3707. (Table 1129)
  3708. Values signal handler is called with:
  3709.     AL = signal number (see #1127)
  3710.     AH = signal argument
  3711. Return: RETF, CF set: terminate process
  3712.     RETF, CF clear, ZF set: abort any interrupted system call with an error
  3713.     RETF, CF clear, ZF clear: restart any interrupted system call
  3714.     IRET: restart any interrupted system call
  3715. Note:    the signal handler may also perform a nonlocal GOTO by resetting the
  3716.       stack pointer and jumping; before doing so, it should dismiss the
  3717.       signal by calling this function with BL=04h
  3718. --------D-218D-------------------------------
  3719. INT 21 - European MS-DOS 4.0 - SEND SIGNAL
  3720.     AH = 8Dh
  3721.     AL = signal number (see #1127)
  3722.     BH = signal argument
  3723.     BL = action
  3724.         00h send to entire command subtree
  3725.         01h send only to specified process
  3726.     DX = Process ID
  3727. Return: CF clear if successful
  3728.     CF set on error
  3729.         AX = error code (01h,06h)(see #1020 at AH=59h/BX=0000h)
  3730. Desc:    invoke the exceptional-condition handler for the specified process
  3731. Note:    error 06h may be returned if one or more of the affected processes
  3732.       have an error handler for the signal
  3733. SeeAlso: AH=8Ch
  3734. --------D-218E00BH00-------------------------
  3735. INT 21 - European MS-DOS 4.0 - "SETPRI" - GET/SET PROCESS PRIORITY
  3736.     AX = 8E00h
  3737.     BH = 00h
  3738.     BL = action
  3739.         00h set priority for command subtree
  3740.         01h set priority for specified process only
  3741.     CX = Process ID
  3742.     DH = 00h
  3743.     DL = change in priority (00h to get priority)
  3744. Return: CF clear if successful
  3745.         DL = process priority
  3746.         DH destroyed
  3747.     CF set on error
  3748.         AX = error code (01h,no such process)(see #1020 at AH=59h)
  3749. Desc:    specify or determine the execution priority of the specified process
  3750.       or the process and all of its children
  3751. SeeAlso: AH=81h
  3752. --------D-218F-------------------------------
  3753. INT 21 U - European MS-DOS 4.0 - ???
  3754.     AH = 8Fh
  3755.     ???
  3756. Return: ???
  3757. SeeAlso: AH=87h
  3758. --------D-2190-------------------------------
  3759. INT 21 U - European MS-DOS 4.0 - ???
  3760.     AH = 90h
  3761.     ???
  3762. Return: ???
  3763. SeeAlso: AH=87h
  3764. --------v-2190-------------------------------
  3765. INT 21 - VIRUS - "Carioca" - INSTALLATION CHECK
  3766.     AH = 90h
  3767. Return: AH = 01h if resident
  3768. SeeAlso: AH=89h"VIRUS",AX=9753h"VIRUS"
  3769. --------D-2191-------------------------------
  3770. INT 21 U - European MS-DOS 4.0 - ???
  3771.     AH = 91h
  3772.     ???
  3773. Return: ???
  3774. SeeAlso: AH=87h
  3775. --------D-2192-------------------------------
  3776. INT 21 U - European MS-DOS 4.0 - ???
  3777.     AH = 92h
  3778.     ???
  3779. Return: ???
  3780. SeeAlso: AH=87h
  3781. --------D-2193-------------------------------
  3782. INT 21 - European MS-DOS 4.0 - "PIPE" - CREATE A NEW PIPE
  3783.     AH = 93h
  3784.     CX = size in bytes
  3785. Return: CF clear if successful
  3786.         AX = read handle
  3787.         BX = write handle
  3788.     CF set on error
  3789.         AX = error code (08h) (see #1020 at AH=59h/BX=0000h)
  3790. Desc:    create a communications channel which may be used for interprocess
  3791.       data and command exchanges
  3792. SeeAlso: AH=3Ch,AH=3Fh,AH=40h,AH=84h
  3793. --------D-2194-------------------------------
  3794. INT 21 U - European MS-DOS 4.0 - ???
  3795.     AH = 94h
  3796.     ???
  3797. Return: ???
  3798. SeeAlso: AH=87h
  3799. --------D-2195-------------------------------
  3800. INT 21 - European MS-DOS 4.0 - HARD ERROR PROCESSING
  3801.     AH = 95h
  3802.     AL = new state
  3803.        00h enabled
  3804.        01h disabled, automatically fail hard errors
  3805. Return: AX = previous setting
  3806. Desc:    specify whether hard (critical) errors should automatically fail the
  3807.       system call or invoke an INT 24
  3808. SeeAlso: INT 24
  3809. --------D-2196-------------------------------
  3810. INT 21 U - European MS-DOS 4.0 - ???
  3811.     AH = 96h
  3812.     ???
  3813. Return: ???
  3814. --------D-2197-------------------------------
  3815. INT 21 U - European MS-DOS 4.0 - ???
  3816.     AH = 97h
  3817.     ???
  3818. Return: ???
  3819. --------v-219753-----------------------------
  3820. INT 21 - VIRUS - "Nina" - INSTALLATION CHECK
  3821.     AX = 9753h
  3822. Return: never (executes original program) if virus resident
  3823. SeeAlso: AH=90h"VIRUS",AX=A1D5h"VIRUS",AX=9AD5h"VIRUS"
  3824. --------D-2198-------------------------------
  3825. INT 21 U - European MS-DOS 4.0 - ???
  3826.     AH = 98h
  3827.     ???
  3828. Return: ???
  3829. --------D-2199-------------------------------
  3830. INT 21 u - European MS-DOS 4.0 - "PBLOCK" - BLOCK A PROCESS
  3831.     AH = 99h
  3832.     DS:BX -> memory location to block on
  3833.     CX = timeout in milliseconds
  3834.     DH = nonzero if interruptable
  3835. Return: CF clear if awakened by event
  3836.         AX = 0000h
  3837.     CF set if unusual wakeup
  3838.         ZF set if timeout, clear if interrupted by signal
  3839.         AX = nonzero
  3840. Desc:    suspend calling process until another process sends a "restart" signal
  3841.       or a timeout occurs
  3842. SeeAlso: AH=9Ah,INT 2F/AX=0802h
  3843. --------D-219A-------------------------------
  3844. INT 21 u - European MS-DOS 4.0 - "PRUN" - UNBLOCK A PROCESS
  3845.     AH = 9Ah
  3846.     DS:BX -> memory location processes may have blocked on
  3847. Return: AX = number of processes awakened
  3848.     ZF set if no processes awakened
  3849. Program: European MS-DOS 4.0 was written for Siemens in Germany and then used
  3850.       by several other European OEMs; its release falls between mainstream
  3851.       versions 3.2 and 3.3
  3852. Desc:    restart all processes waiting for the specified "restart" signal
  3853. SeeAlso: AH=99h,INT 2F/AX=0802h
  3854. --------v-219AD5------------------------
  3855. INT 21 - VIRUS - "Massacre/Beavis" - INSTALLATION CHECK
  3856.     AX = 9AD5h
  3857. Return: AX = 9AD4h if resident
  3858. SeeAlso: AX=6969h"VIRUS",AX=A1D5h"VIRUS"
  3859. --------I-21A0-------------------------------
  3860. INT 21 - Attachmate Extra! - GET 3270 DISPLAY STATE
  3861.     AH = A0h
  3862. Return: AL = display status (see #1130)
  3863.     BX = host window status (see #1131)
  3864. Program: Attachmate Extra! is a 3270 emulator by Attachmate Corporation
  3865. SeeAlso: AH=A1h
  3866.  
  3867. Bitfields for Attachmate Extra! display status:
  3868. Bit(s)    Description    (Table 1130)
  3869.  7    0=windowed, 1=enlarged
  3870.  6-3    current screen profile number 0-9
  3871.  2-0    active window number (0=PC, 1-4=host B-E, 5-6=notepad F-G)
  3872.  
  3873. Bitfields for host window status:
  3874. Bit(s)    Description    (Table 1131)
  3875.  15    reserved
  3876.  14    0=host E window installed, 1=not
  3877.  13    0=host E terminal on, 1=off
  3878.  12    0=host E window displayed, 1=not
  3879.  11    reserved
  3880.  10    0=host D window installed, 1=not
  3881.  9    0=host D terminal on, 1=off
  3882.  8    0=host D window displayed, 1=not
  3883.  7    reserved
  3884.  6    0=host C window installed, 1=not
  3885.  5    0=host C terminal on, 1=off
  3886.  4    0=host C window displayed, 1=not
  3887.  3    reserved
  3888.  2    0=host B window installed, 1=not
  3889.  1    0=host B terminal on, 1=off
  3890.  0    0=host B window displayed, 1=not
  3891. --------I-21A1-------------------------------
  3892. INT 21 - Attachmate Extra! - SET 3270 DISPLAY STATE
  3893.     AH = A1h
  3894.     AL = new display status byte (see #1130)
  3895. SeeAlso: AH=A0h,AH=A2h
  3896. --------v-21A1D5-----------------------------
  3897. INT 21 - VIRUS - "789"/"Filehider" - INSTALLATION CHECK
  3898.     AX = A1D5h
  3899. Return: AX = 900Dh if resident
  3900. SeeAlso: AX=9753h,AX=9AD5h,AX=A55Ah
  3901. --------I-21A2-------------------------------
  3902. INT 21 - Attachmate Extra! - SET HOST WINDOW STATE
  3903.     AH = A2h
  3904.     AL = new host window status byte (see #1132)
  3905. SeeAlso: AH=A1h
  3906.  
  3907. Bitfields for Attachmate Extra! host window status:
  3908. Bit(s)    Description    (Table 1132)
  3909.  7    0=power off, 1=power on
  3910.  6    0=not installed, 1=installed
  3911.  5-3    reserved
  3912.  2-0    window number 1-4=host B-E
  3913. --------I-21A3-------------------------------
  3914. INT 21 - Attachmate Extra! - SEND KEYSTROKES TO HOST WINDOW
  3915.     AH = A3h
  3916.     AL = window number (1-4=host B-E)
  3917.     CX = 0001h
  3918.     DS:BX -> keystroke buffer
  3919.     DL = zero if keystroke buffer contains host function code (see #1133),
  3920.           non-zero if keystroke buffer contains ASCII character
  3921. Return: CX = zero if character sent, non-zero if not
  3922.     BX incremented if CX=0
  3923.  
  3924. (Table 1133)
  3925. Values for Attachmate Extra! host function code:
  3926.  00h=reserved    10h=PF16    20h=Clear    30h=SysReq
  3927.  01h=PF1    11h=PF17    21h=Print    31h=ErInp
  3928.  02h=PF2    12h=PF18    22h=Left    32h=ErEof
  3929.  03h=PF3    13h=PF19    23h=Right    33h=Ident
  3930.  04h=PF4    14h=PF20    24h=Up        34h=Test
  3931.  05h=PF5    15h=PF21    25h=Down    35h=Reset
  3932.  06h=PF6    16h=PF22    26h=Home    36h=DevCncl
  3933.  07h=PF7    17h=PF23    27h=Fast Left    37h=Dup
  3934.  08h=PF8    18h=PF24    28h=Fast Right    38h=FldMark
  3935.  09h=PF9    19h=Alt on    29h=Bksp    39h=Enter
  3936.  0Ah=PF10    1Ah=Alt off    2Ah=Insert    3Ah=CrSel
  3937.  0Bh=PF11    1Bh=Shift on    2Bh=Delete
  3938.  0Ch=PF12    1Ch=Shift off    2Ch=Backtab
  3939.  0Dh=PF13    1Dh=PA1        2Dh=Tab
  3940.  0Eh=PF14    1Eh=PA2        2Eh=Newline
  3941.  0Fh=PF15    1Fh=PA3        2Fh=Attn
  3942. --------I-21A4-------------------------------
  3943. INT 21 - Attachmate Extra! - GET HOST WINDOW BUFFER ADDRESS
  3944.     AH = A4h
  3945.     AL = window number (1-4=host B-E)
  3946. Return: DS:BX -> 3270 display buffer
  3947. SeeAlso: AH=A5h,AH=B8h
  3948. --------I-21A5-------------------------------
  3949. INT 21 - Attachmate Extra! - GET HOST WINDOW CURSOR POSITION
  3950.     AH = A5h
  3951.     AL = window number (1-4=host B-E)
  3952. Return: BX = cursor position (80 * row + column, where 0:0 is upper left)
  3953. Note:    if the host window is configured with the Extended Attribute (EAB)
  3954.       feature, multiply the cursor position by 2 to obtain the byte offset
  3955.       into the display buffer
  3956. SeeAlso: AH=A4h
  3957. --------v-21A55A-----------------------------
  3958. INT 21 - VIRUS - "Eddie-2" - INSTALLATION CHECK
  3959.     AX = A55Ah
  3960. Return: AX = 5AA5h if resident
  3961. SeeAlso: AX=A1D5h,AX=AA00h
  3962. --------v-21AA00-----------------------------
  3963. INT 21 - VIRUS - "Blinker" - INSTALLATION CHECK
  3964.     AX = AA00h
  3965. Return: AX = 00AAh if resident
  3966. SeeAlso: AX=A55Ah,AX=AA03h
  3967. --------v-21AA03-----------------------------
  3968. INT 21 - VIRUS - "Backtime" - INSTALLATION CHECK
  3969.     AX = AA03h
  3970. Return: AX = 03AAh if resident
  3971. SeeAlso: AX=AA00h,AH=ABh
  3972. --------v-21AB-------------------------------
  3973. INT 21 - VIRUS - "600" or "Voronezh"-family - INSTALLATION CHECK
  3974.     AH = ABh
  3975. Return: AX = 5555h if resident
  3976. SeeAlso: AX=AA03h,AX=ABCDh,AX=BBBBh"VIRUS"
  3977. --------v-21ABCD-----------------------------
  3978. INT 21 - VIRUS - Major BBS - INSTALLATION CHECK
  3979.     AX = ABCDh
  3980. Return: AX = 1234h if installed
  3981. SeeAlso: AH=ABh"VIRUS",AX=ABCDh"SuperVirus"
  3982. --------v-21ABCD------------------------
  3983. INT 21 - VIRUS - "SuperVirus 2" - INSTALLATION CHECK
  3984.     AX = ABCDh
  3985. Return: AX = DCBAh if resident
  3986. SeeAlso: AX=ABCDh"VIRUS",AX=BBBBh"VIRUS"
  3987. --------I-21AF-------------------------------
  3988. INT 21 - Attachmate Extra! - GET TRANSLATE TABLE ADDRESS
  3989.     AH = AFh
  3990. Return: DS:BX -> translate tables (see #1134)
  3991.  
  3992. Format of Attachmate Extra! translate tables:
  3993. Offset    Size    Description    (Table 1134)
  3994.  00h 256 BYTEs    ASCII to 3270 buffer code translate table
  3995. 100h 256 BYTEs    3270 buffer code to ASCII translate table
  3996. 200h 256 BYTEs    3270 buffer code to EBCDIC translate table
  3997. 300h 256 BYTEs    EBCDIC to 3270 buffer code translate table
  3998. --------v-21B3-------------------------------
  3999. INT 21 - VIRUS - "Requires" - INSTALLATION CHECK
  4000.     AH = B3h
  4001. Return: AX = 9051h if resident
  4002. SeeAlso: AH=7Fh"VIRUS",AX=B974h"VIRUS"
  4003. --------N-21B300-----------------------------
  4004. INT 21 U - Novell NetWare - CHECK LIP/PACKET SIGNING/IPX CHECKSUM SUPPORT???
  4005.     AX = B300h
  4006. Return: AX = 0000h if supported???
  4007. Note:    this function appeared with the packet signing/Large Internet Packets/
  4008.       IPX Checksum-aware NetWare shells
  4009. SeeAlso: AX=B301h,AX=B302h
  4010. --------N-21B301-----------------------------
  4011. INT 21 U - Novell NetWare - CHECK SIGNATURE LEVEL???
  4012.     AX = B301h
  4013. Return: AX = 0000h if supported???
  4014.         BX:CX indicate signature level (see #1135)
  4015. Note:    this function appeared with the packet signing/Large Internet Packets/
  4016.       IPX Checksum-aware NetWare shells
  4017. SeeAlso: AX=B300h,AX=B304h,#2154 at INT 2F/AX=7A20h/BX=0000h
  4018.  
  4019. (Table 1135)
  4020. Values for signature level indicator:
  4021.  0000h:0000h = signature level 0
  4022.  0002h:0000h = signature level 1
  4023.  0202h:0000h = signature level 2
  4024.  0202h:0202h = signature level 3
  4025. --------N-21B302-----------------------------
  4026. INT 21 U - Novell NetWare - START PACKET SIGNING
  4027.     AX = B302h
  4028.     CX = server connection (1-8)
  4029.     DS:SI -> 24-byte buffer containing ???
  4030. Return: ???
  4031. Notes:    this function appeared with the packet signing/Large Internet Packets/
  4032.       IPX Checksum-aware NetWare shells
  4033.     if packet signing is active, this call is required if and only if the
  4034.       last call successfully authenticated the workstation to the server
  4035. SeeAlso: AX=B300h,#2154
  4036. --------N-21B304-----------------------------
  4037. INT 21 U - Novell NetWare - SET SIGNATURE LEVEL
  4038.     AX = B304h
  4039.     BX:CX = new signature level (see AX=B301h)
  4040. Return: ???
  4041. Note:    this function appeared with the packet signing/Large Internet Packets/
  4042.       IPX Checksum-aware NetWare shells
  4043. SeeAlso: AX=B300h,AX=B301h,AX=B306h,#2154
  4044. --------N-21B306-----------------------------
  4045. INT 21 - Novell NetWare - RENEGOTIATE SECURITY LEVEL
  4046.     AX = B306h
  4047.     CX = server connection number (01h-08h)
  4048. Return: ???
  4049. Note:    this function appeared with the packet signing/Large Internet Packets/
  4050.       IPX Checksum-aware NetWare shells
  4051. SeeAlso: AX=B300h,AX=B304h,#2154
  4052. --------N-21B4-------------------------------
  4053. INT 21 U - Novell NetWare - "AttachHandle"
  4054.     AH = B4h
  4055.     DS:SI -> input buffer (see #1136)
  4056. Return: AX = DOS file handle or return code
  4057. Note:    this is an interface provided by NetWare to give DOS file access to
  4058.       NetWare files on non-DOS systems such as Macintosh, OS/2, and Unix
  4059. SeeAlso: AX=E909h
  4060.  
  4061. Format of Novell NetWare input buffer:
  4062. Offset    Size    Description    (Table 1136)
  4063.  00h    BYTE    "WorkFileServer"
  4064.  01h    BYTE    access code
  4065.  02h    DWORD    "OpenHandle"
  4066.  06h    WORD    "OpenHandleCount"
  4067.  08h    DWORD    "OpenFileSize"
  4068. Note:    the six bytes at 02h-07h appear to be the six-byte NetWare handle
  4069.       returned by AX=E909h
  4070. --------N-21B500-----------------------------
  4071. INT 21 U - Novell NetWare - VNETWARE.386 API - GET INSTANCE DATA
  4072.     AX = B500h
  4073. Return: ES:BX -> data
  4074.     CX = length
  4075. SeeAlso: AX=B501h,AX=B502h
  4076. --------N-21B501-----------------------------
  4077. INT 21 U - Novell NetWare - VNETWARE.386 API - END VIRTUAL MACHINE
  4078.     AX = B501h
  4079. SeeAlso: AX=B500h,AX=B502h
  4080. --------N-21B502-----------------------------
  4081. INT 21 U - Novell NetWare - VNETWARE.386 API - START VIRTUAL MACHINE
  4082.     AX = B502h
  4083. SeeAlso: AX=B500h,AX=B501h
  4084. --------N-21B5-------------------------------
  4085. INT 21 - Novell NetWare shell 3.01 - TASK MODE CONTROL
  4086.     AH = B5h
  4087.     AL = subfunction
  4088.         03h get task mode
  4089.         Return: AH = 00h
  4090.             AL = current task mode byte (see #1137)
  4091.         04h get task mode pointer
  4092.         Return: ES:BX -> task mode byte
  4093. Notes:    the task mode byte specifies how task cleanup should be performed, but
  4094.       is declared to be version-dependent
  4095.     allows a program to disable the automatic cleanup for programs managing
  4096.       task swapping, etc.
  4097.  
  4098. (Table 1137)
  4099. Values for NetWare task mode byte in version 3.01:
  4100.  00h-03h reserved
  4101.  04h     no task cleanup
  4102. --------N-21B505-----------------------------
  4103. INT 21 U - Novell NetWare - VNETWARE.386 API - SET VIRTUAL MACHINE ID
  4104.     AX = B505h
  4105.     ???
  4106. Return: ???
  4107. SeeAlso: AX=B502h,AX=B506h
  4108. --------N-21B506-----------------------------
  4109. INT 21 U - Novell NetWare - VNETWARE.386 API - GET VIRTUAL MACH SUPPORT LEVEL
  4110.     AX = B506h
  4111. Return: AX = ??? (0002h)
  4112. SeeAlso: AX=B505h
  4113. --------N-21B507-----------------------------
  4114. INT 21 - Novell NetWare - NetWare Shell - GET NUMBER OF PACKET BURST BUFFERS
  4115.     AX = B507h
  4116. Return: AL = number of packet burst buffers (configured at shell load time)
  4117. --------N-21B6-------------------------------
  4118. INT 21 - Novell NetWare - FILE SERVICES - EXTENDED FILE ATTRIBUTES
  4119.     AH = B6h
  4120.     AL = subfunction
  4121.         00h get extended file attributes
  4122.         01h set extended file attributes
  4123.         CL = extended file attributes (see #1138)
  4124.     DS:DX -> ASCIZ pathname (max 255 bytes)
  4125. Return: CF set on error
  4126.         AL = error code
  4127.         8Ch caller lacks privileges
  4128.         FEh not permitted to search directory
  4129.         FFh file not found
  4130.     CF clear if successful
  4131.         AL = 00h (success)
  4132.         CL = current extended file attributes (see #1138)
  4133. Note:    this function is supported by Advanced NetWare 2.1+
  4134. SeeAlso: AX=4300h,AH=E3h/SF=0Fh
  4135.  
  4136. Bitfields for NetWare extended file attributes:
  4137. Bit(s)    Description    (Table 1138)
  4138.  2-0    search mode (executables only)
  4139.     000 none (use shell's default search)
  4140.     001 search on all opens without path
  4141.     010 do not search
  4142.     011 search on read-only opens without path
  4143.     100 reserved
  4144.     101 search on all opens
  4145.     110 reserved
  4146.     111 search on all read-only opens
  4147.  3    reserved
  4148.  4    transactions on file tracked
  4149.  5    file's FAT indexed
  4150.  6    read audit (to be implemented)
  4151.  7    write audit (to be implemented)
  4152. --------N-21B7-------------------------------
  4153. INT 21 U - Novell NetWare - "HoldFileModeSet" (obsolete)
  4154.     AH = B7h
  4155.     AL = new value for HoldFileFlag
  4156. Return: AL = previous value of HoldFileFlag
  4157. Note:    this function provided backward compatibility with a bug in early
  4158.       DOS versions and CP/M, but is no longer used or supported
  4159. --------I-21B8-------------------------------
  4160. INT 21 - Attachmate Extra! - DISABLE HOST BUFFER UPDATES
  4161.     AH = B8h
  4162.     AL = window number (1-4=host B-E)
  4163.     DL = 01h
  4164. Notes:    only valid in CUT mode
  4165.     next AID keystroke (eg Enter) enables host buffer updates
  4166. SeeAlso: AH=A4h
  4167. --------N-21B800-----------------------------
  4168. INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT CAPTURE FLAGS
  4169.     AX = B800h
  4170.     CX = size of reply buffer (01h-3Fh)
  4171.     ES:BX -> reply buffer for capture flags table (see #1139)
  4172. Return: AL = status
  4173.         00h successful
  4174. Note:    this function is supported by Advanced NetWare 2.0+
  4175. SeeAlso: AX=B801h,AX=B802h,AH=DFh/DL=00h,AH=DFh/DL=04h
  4176.  
  4177. Format of NetWare capture flags table:
  4178. Offset    Size    Description    (Table 1139)
  4179.  00h    BYTE    status (used internally, should be set to 00h)
  4180.  01h    BYTE    print flags (see #1140)
  4181.  02h    BYTE    tab size (01h-12h, default 08h)
  4182.  03h    BYTE    printer number on server (00h-04h, default 00h)
  4183.  04h    BYTE    number of copies to print (00h-FFh, default 01h)
  4184.  05h    BYTE    form type required in printer (default 00h)
  4185.  06h    BYTE    reserved
  4186.  07h 13 BYTEs    text to be placed on banner page
  4187.  14h    BYTE    reserved
  4188.  15h    BYTE    default local printer (00h = LPT1)
  4189.  16h    WORD    (big-endian) timeout in clock ticks for flushing capture file
  4190.           on inactivity, or 0000h to disable timeout
  4191.  18h    BYTE    flush capture file on LPT close if nonzero
  4192.  19h    WORD    (big-endian) maximum lines per page
  4193.  1Bh    WORD    (big-endian) maximum characters per line
  4194.  1Dh 13 BYTEs    name of form required in printer
  4195.  2Ah    BYTE    LPT capture flag
  4196.         00h inactive, FFh LPT device is being captured
  4197.  2Bh    BYTE    file capture flag
  4198.         00h if no file specified, FFh if capturing to file
  4199.  2Ch    BYTE    timing out (00h if no timeout in effect, FFh if timeout counter
  4200.           running)
  4201.  2Dh    DWORD    (big-endian) address of printer setup string
  4202.  31h    DWORD    (big-endian) address of printer reset string
  4203.  35h    BYTE    target connection ID
  4204.  36h    BYTE    capture in progress if FFh
  4205.  37h    BYTE    job queued for printing if FFh
  4206.  38h    BYTE    print job valid if FFh
  4207.  39h    DWORD    bindery object ID of print queue if previous byte FFh
  4208.  3Dh    WORD    (big-endian) print job number (1-999)
  4209.  
  4210. Bitfields for NetWare print flags:
  4211. Bit(s)    Description    (Table 1140)
  4212.  2    print capture file if interrupted by loss of connection
  4213.  3    no automatic form feed after print job
  4214.  6    printing control sequences interpreted by print service
  4215.  7    print banner page before capture file
  4216. --------N-21B801-----------------------------
  4217. INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT CAPTURE FLAGS
  4218.     AX = B801h
  4219.     CX = size of buffer (01h-3Fh)
  4220.     ES:BX -> buffer containing capture flags table (see #1139)
  4221. Return: AL = status
  4222.         00h successful
  4223. Note:    this function is supported by Advanced NetWare 2.0+
  4224. SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
  4225. --------N-21B802-----------------------------
  4226. INT 21 - Novell NetWare - PRINT SERVICES - GET SPECIFIC CAPTURE FLAGS
  4227.     AX = B802h
  4228.     CX = size of reply buffer (01h-3Fh)
  4229.     DH = LPT port (00h-02h)
  4230.     ES:BX -> reply buffer for capture flags table (see #1139)
  4231. Return: AL = status
  4232.         00h successful
  4233. Note:    this function is supported by Advanced NetWare 2.1+
  4234. SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
  4235. --------N-21B803-----------------------------
  4236. INT 21 - Novell NetWare - PRINT SERVICES - SET SPECIFIC CAPTURE FLAGS
  4237.     AX = B803h
  4238.     CX = size of buffer (01h-3Fh)
  4239.     DH = LPT port (00h-02h)
  4240.     ES:BX -> buffer containing capture flags table (see #1139)
  4241. Return: AL = status
  4242.         00h successful
  4243. Note:    this function is supported by Advanced NetWare 2.1+
  4244. SeeAlso: AX=B800h,AX=B803h,AH=DFh/DL=00h,AH=DFh/DL=04h
  4245. --------N-21B804-----------------------------
  4246. INT 21 - Novell NetWare - PRINT SERVICES - GET DEFAULT LOCAL PRINTER
  4247.     AX = B804h
  4248. Return: DH = default LPT port (00h-02h)
  4249. Note:    this function is supported by Advanced NetWare 2.1+
  4250. SeeAlso: AX=B800h,AX=B805h,AH=DFh/DL=00h
  4251. --------N-21B805-----------------------------
  4252. INT 21 - Novell NetWare - PRINT SERVICES - SET DEFAULT LOCAL PRINTER
  4253.     AX = B805h
  4254.     DH = new default LPT port (00h-02h)
  4255. Return: AL = status
  4256.         00h successful
  4257. Note:    this function is supported by Advanced NetWare 2.1+
  4258. SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=00h
  4259. --------N-21B806-----------------------------
  4260. INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT QUEUE
  4261.     AX = B806h
  4262.     DH = LPT port (00h-02h)
  4263.     BX:CX = print queue's object ID
  4264. Return: AL = status
  4265.         00h successful
  4266.         FFh job already set
  4267. Desc:    specify the print queue on which a print job is to be placed the next
  4268.       time a capture is started on the given printer port
  4269. Note:    this function is supported by Advanced NetWare 2.1+
  4270. SeeAlso: AX=B801h,AX=B807h,AH=E0h/SF=09h
  4271. --------N-21B807-----------------------------
  4272. INT 21 - Novell NetWare - PRINT SERVICES - SET CAPTURE PRINT JOB
  4273.     AX = B807h
  4274.     DH = LPT port (00h-02h)
  4275.     BX = job number (see AH=E3h/SF=68h)
  4276.     SI:DI:CX = NetWare file handle (see AH=E3h/SF=68h)
  4277. Return: AL = status
  4278.         00h successful
  4279.         FFh job already queued
  4280. Desc:    specify the capture file and print job to be used for subsequent
  4281.       output to the given printer port
  4282. Note:    this function is supported by Advanced NetWare 2.1+
  4283. SeeAlso: AX=B801h,AX=B806h,AH=E0h/SF=09h,AH=E3h/SF=68h
  4284. --------N-21B808-----------------------------
  4285. INT 21 - Novell NetWare - PRINT SERVICES - GET BANNER USER NAME
  4286.     AX = B808h
  4287.     ES:BX -> 12-byte buffer for user name
  4288. Return: AL = status
  4289.         00h successful
  4290. Desc:    get the user name which is printed on the banner page
  4291. Notes:    this function is supported by Advanced NetWare 2.1+
  4292.     the default name is the login name of the user
  4293. SeeAlso: AX=B809h
  4294. --------N-21B809-----------------------------
  4295. INT 21 - Novell NetWare - PRINT SERVICES - SET BANNER USER NAME
  4296.     AX = B809h
  4297.     ES:BX -> 12-byte buffer containing user name
  4298. Return: AL = status
  4299.         00h successful
  4300. Desc:    specify the user name which is printed on the banner page
  4301. Notes:    this function is supported by Advanced NetWare 2.1+
  4302.     the default name is the login name of the user
  4303. SeeAlso: AX=B808h
  4304. --------N-21B9-------------------------------
  4305. INT 21 U - Novell NetWare - "SpecialAttachableFunction"
  4306.     AH = B9h
  4307.     AL = FFh to hook this function
  4308.         ES:BX -> function to invoke on AH=B9h when AL<>FFh
  4309. Note:    this function is no longer used or supported by current versions of
  4310.       NetWare
  4311. --------v-21B974-----------------------------
  4312. INT 21 - VIRUS - "Tracker" - INSTALLATION CHECK
  4313.     AX = B974h
  4314. Return: AX = 2888h if resident
  4315. SeeAlso: AH=B3h"VIRUS",AH=D0h"VIRUS"
  4316. --------N-21BA-------------------------------
  4317. INT 21 U - Novell NetWare - "ReturnCommandComPointers"
  4318.     AH = BAh
  4319. Return: DX = environment segment
  4320.     ES:DI -> COMMAND.COM drive
  4321. Desc:    used to edit the COMSPEC and PATH variables in the master environment
  4322.       when mapping network drives
  4323. Note:    this function was documented in older Novell documents which are no
  4324.       longer available
  4325. --------N-21BB-------------------------------
  4326. INT 21 - Novell NetWare - WORKSTATION - SET END OF JOB STATUS
  4327.     AH = BBh
  4328.     AL = new EOJ flag
  4329.         00h disable EOJs
  4330.         01h enable EOJs
  4331. Return: AL = old EOJ flag
  4332. Desc:    specify whether the network shell should automatically generate an
  4333.       End of Job call when the root command processor regains control
  4334. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  4335.       Alloy NTNX
  4336. SeeAlso: AH=19h,AH=D6h
  4337. --------v-21BBBB-----------------------------
  4338. INT 21 - VIRUS - "Hey You" - INSTALLATION CHECK
  4339.     AX = BBBBh
  4340. Return: AX = 6969h
  4341. SeeAlso: AH=ABh"VIRUS",AH=BEh"VIRUS"
  4342. --------N-21BC-------------------------------
  4343. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG PHYSICAL RECORD
  4344.     AH = BCh
  4345.     AL = flags (see #1142)
  4346.     BX = file handle
  4347.     CX:DX = starting offset in file
  4348.     SI:DI = length of region to lock
  4349.     BP = timeout in timer ticks (1/18 sec)
  4350.         0000h = don't wait if already locked
  4351. Return: AL = status (see #1141)
  4352. Desc:    add the specified physical record to the log table, optionally locking
  4353.       it
  4354. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4355.       Alloy NTNX
  4356. SeeAlso: AH=5Ch,AH=BDh,AH=BEh,AH=BFh,AH=C2h,AH=D0h
  4357.  
  4358. (Table 1141)
  4359. Values for NetWare status:
  4360.  00h    successful
  4361.  96h    no dynamic memory for file
  4362.  FEh    timed out
  4363.  FFh    failed
  4364.  
  4365. Bitfields for NetWare flags:
  4366. Bit(s)    Description    (Table 1142)
  4367.  0    lock as well as log record
  4368.  1    non-exclusive lock
  4369. --------N-21BD-------------------------------
  4370. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYSICAL RECORD
  4371.     AH = BDh
  4372.     BX = file handle
  4373.     CX:DX = starting offset in file
  4374.     SI:DI = length of record
  4375. Return: AL = status
  4376.         00h successful
  4377.         FFh record not locked
  4378. Desc:    unlock the specified physical record but do not remove it from log
  4379.       table
  4380. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4381.       Alloy NTNX
  4382. SeeAlso: AH=BCh,AH=BEh"NetWare",AH=C0h,AH=C3h,AH=D2h
  4383. --------N-21BE-------------------------------
  4384. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD
  4385.     AH = BEh
  4386.     BX = file handle
  4387.     CX:DX = starting offset within file
  4388.     SI:DI = record length in bytes
  4389. Return: AL = status
  4390.         00h successful
  4391.         FFh specified record not locked
  4392. Desc:    unlock the physical record and remove it from the log table
  4393. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4394.       Alloy NTNX
  4395. SeeAlso: AH=5Ch,AH=BCh,AH=BDh,AH=C1h,AH=C4h,AH=D4h
  4396. --------v-21BE-------------------------------
  4397. INT 21 - VIRUS - "Datalock" - INSTALLATION CHECK
  4398.     AH = BEh
  4399. Return: AX = 1234h if resident
  4400. SeeAlso: AX=BBBBh,AX=BE00h
  4401. --------v-21BE00-----------------------------
  4402. INT 21 - VIRUS - "USSR-1049" - INSTALLATION CHECK
  4403.     AX = BE00h
  4404.     CF set
  4405. Return: CF clear if resident
  4406. SeeAlso: AH=BEh"VIRUS",AH=C0h"VIRUS"
  4407. --------N-21BF-------------------------------
  4408. INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK RECORD (FCB)
  4409.     AH = BFh
  4410.     AL = flags (see #1142)
  4411.     DS:DX -> opened FCB (see #0693 at AH=0Fh)
  4412.     BX:CX = offset
  4413.     BP = lock timeout in timer ticks (1/18 sec) if AL nonzero
  4414.     SI:DI = length
  4415. Return: AL = error code (see #1141)
  4416. Note:    this function was added in NetWare 4.6, but was removed some time prior
  4417.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4418.       documentation
  4419. SeeAlso: AH=BCh,AH=C0h"NetWare",AH=C2h"NetWare"
  4420. --------N-21C0-------------------------------
  4421. INT 21 O - Novell NetWare, Alloy NTNX - RELEASE RECORD (FCB)
  4422.     AH = C0h
  4423.     DS:DX -> non-extended FCB (see #0693 at AH=0Fh)
  4424.     BX:CX = offset
  4425. Return: AL = error code (see #1141)
  4426. Notes:    unlocks record but does not remove it from log table
  4427.     this function was added in NetWare 4.6, but was removed some time prior
  4428.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4429.       documentation
  4430. SeeAlso: AH=BDh,AH=BFh,AH=C1h"NetWare",AH=C3h
  4431. --------v-21C0-------------------------------
  4432. INT 21 - VIRUS - "Slow"/"Zerotime", "Solano" - INSTALLATION CHECK
  4433.     AH = C0h
  4434. Return: AX = 0300h if "Slow"/"Zerotime" resident
  4435.     AX = 1234h if "Solano" resident
  4436. SeeAlso: AX=BE00h,AX=C000h"VIRUS",AX=C301h"VIRUS"
  4437. --------v-21C000-----------------------------
  4438. INT 21 - VIRUS - "QUICKY" - INSTALLATION CHECK
  4439.     AX = C000h
  4440.     BX = most files infected by any other infected file
  4441. Return: AX = 76F3h if resident
  4442. SeeAlso: AH=C0h"VIRUS",AX=C001h,AX=C002h,AH=C1h"VIRUS"
  4443. --------v-21C001-----------------------------
  4444. INT 21 - VIRUS - "QUICKY" - TURN INFECTION OFF
  4445.     AX = C001h
  4446. Return: nothing
  4447. Note:    if the virus is already memory resident this call disables any
  4448.       further infections
  4449. SeeAlso: AX=C000h,AX=C002h
  4450. --------v-21C002-----------------------------
  4451. INT 21 - VIRUS - "QUICKY" - TURN INFECTION ON
  4452.     AX = C002h
  4453. Return: nothing
  4454. Note:    if the virus is already memory resident and infection is disabled,
  4455.       this call re-enables it
  4456. SeeAlso: AX=C000h,AX=C001h
  4457. --------N-21C1-------------------------------
  4458. INT 21 O - Novell NetWare, Alloy NTNX - CLEAR RECORD (FCB)
  4459.     AH = C1h
  4460.     DS:DX -> opened FCB (see #0693 at AH=0Fh)
  4461.     BX:CX = offset
  4462. Return: AL = error code (see #1141)
  4463. Note:    unlocks record and removes it from log table
  4464.     this function was added in NetWare 4.6, but was removed some time prior
  4465.       to Advanced NetWare, and is no longer listed in current Novell
  4466.       documentation
  4467. SeeAlso: AH=BEh,AH=C0h"NetWare",AH=C4h
  4468. --------v-21C1-------------------------------
  4469. INT 21 - VIRUS - "Solano" - ???
  4470.     AH = C1h
  4471.     ???
  4472. Return: ???
  4473. SeeAlso: AH=C0h"VIRUS"
  4474. --------N-21C2-------------------------------
  4475. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK PHYSICAL RECORD SET
  4476.     AH = C2h
  4477.     AL = flags
  4478.         bit 1: non-exclusive lock
  4479.     BP = lock timeout in timer ticks (1/18 sec) 0000h = no wait
  4480. Return: AL = status
  4481.         00h successful
  4482.         FEh timed out
  4483.         FFh failed
  4484. Desc:    attempt to lock all physical records listed in the log table
  4485. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4486.       Alloy NTNX
  4487.     status FFh will be returned if one or more physical records have been
  4488.       exclusively locked by another process
  4489. SeeAlso: AH=BFh,AH=C3h,AH=D1h
  4490. --------v-21C2-------------------------------
  4491. INT 21 - VIRUS - "Scott's Valley" - ???
  4492.     AH = C2h
  4493.     ???
  4494. Return: ???
  4495. SeeAlso: AH=C0h"VIRUS"
  4496. --------N-21C3-------------------------------
  4497. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE PHYS RECORD SET
  4498.     AH = C3h
  4499. Desc:    unlock all currently-locked physical records in the log table, but do
  4500.       not remove them from the table
  4501. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4502.       Alloy NTNX
  4503. SeeAlso: AH=BDh,AH=C0h,AH=C2h"NetWare",AH=C4h,AH=D3h
  4504. --------v-21C301DXF1F1-----------------------
  4505. INT 21 - VIRUS - "905"/"Backfont" - INSTALLATION CHECK
  4506.     AX = C301h
  4507.     DX = F1F1h
  4508. Return: DX = 0E0Eh if resident
  4509. SeeAlso: AH=C0h"VIRUS",AX=C500h"VIRUS"
  4510. --------N-21C4-------------------------------
  4511. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR PHYSICAL RECORD SET
  4512.     AH = C4h
  4513. Desc:    unlock all physical records in the log table and remove them from the
  4514.       log table
  4515. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4516.       Alloy NTNX
  4517. SeeAlso: AH=BEh,AH=C1h,AH=D5h
  4518. --------N-21C500-----------------------------
  4519. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - OPEN SEMAPHORE
  4520.     AX = C500h
  4521.     DS:DX -> semaphore name (counted string, max 127 bytes)
  4522.     CL = initial value for semaphore
  4523. Return: AL = status
  4524.         00h successful
  4525.         BL = number of processes having semaphore open
  4526.         CX:DX = semaphore handle
  4527.         03h name length greater than 127
  4528.         (refer to Novell document FYI.A.4611)
  4529.         FEh invalid name length
  4530.         FFh invalid semaphore value
  4531. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4532.       Alloy NTNX
  4533.     the semaphore's value is incremented by AX=C503h and decremented by
  4534.       AX=C502h
  4535. SeeAlso: AX=C501h,AX=C502h,AX=C503h,AX=C504h,AX=F220h/SF=00h
  4536. --------v-21C500-----------------------------
  4537. INT 21 - VIRUS - "Sverdlov" - INSTALLATION CHECK
  4538.     AX = C500h
  4539. Return: AX = 6731h if resident
  4540. SeeAlso: AX=C301h"VIRUS",AH=C6h"VIRUS"
  4541. --------N-21C501-----------------------------
  4542. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - EXAMINE SEMAPHORE
  4543.     AX = C501h
  4544.     CX:DX = semaphore handle
  4545. Return: AL = status
  4546.         00h successful
  4547.         CX = semaphore value (-127 to 127)
  4548.         DL = count of processes which have the semaphore open
  4549.         FFh invalid handle
  4550. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4551.       Alloy NTNX
  4552. SeeAlso: AX=C500h"NetWare",AX=C502h,AX=C504h,AX=F220h/SF=01h
  4553. --------N-21C502-----------------------------
  4554. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - WAIT ON SEMAPHORE
  4555.     AX = C502h
  4556.     CX:DX = semaphore handle
  4557.     BP = timeout limit in timer ticks (1/18 sec)
  4558.         0000h return immediately if semaphore already zero or negative
  4559. Return: AL = status
  4560.         00h successful
  4561.         FEh timeout
  4562.         FFh invalid handle
  4563. Desc:    decrement the semaphore's value, optionally waiting until its value
  4564.       becomes positive before decrementing
  4565. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4566.       Alloy NTNX
  4567. SeeAlso: AX=C500h"NetWare",AX=C501h,AX=C503h,AX=F220h/SF=02h
  4568. --------N-21C503-----------------------------
  4569. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - SIGNAL SEMAPHORE
  4570.     AX = C503h
  4571.     CX:DX = semaphore handle
  4572. Return: AL = status
  4573.         00h successful
  4574.         01h semaphore value overflowed
  4575.         FFh invalid handle
  4576. Desc:    increment the semaphore's value and signal the first process (if any)
  4577.       in the queue waiting on the semaphore
  4578. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4579.       Alloy NTNX
  4580. SeeAlso: AX=C500h"NetWare",AX=C502h,AX=F220h/SF=03h
  4581. --------N-21C504-----------------------------
  4582. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLOSE SEMAPHORE
  4583.     AX = C504h
  4584.     CX:DX = semaphore handle
  4585. Return: AL = status
  4586.         00h successful
  4587.         FFh invalid handle
  4588. Desc:    decrement the semaphore's open count, and delete the semaphore if the
  4589.       count reaches zero
  4590. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4591.       Alloy NTNX
  4592. SeeAlso: AX=C500h"NetWare",AX=C501h,AX=F220h/SF=04h
  4593. --------N-21C6-------------------------------
  4594. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - GET OR SET LOCK MODE
  4595.     AH = C6h
  4596.     AL = subfunction
  4597.         00h set old "compatibility" mode (default)
  4598.         01h set new extended locks mode
  4599.         02h get lock mode
  4600. Return: AL = current lock mode
  4601. Note:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+, and
  4602.       Alloy NTNX
  4603.     the locking mode should be 01h for NetWare 4.61+ and Advanced
  4604.       NetWare 1.0+ locking calls, and 00h for all older calls
  4605. SeeAlso: AH=BCh,AH=C4h,AH=D0h
  4606. --------v-21C6-------------------------------
  4607. INT 21 - VIRUS - "Socha" - INSTALLATION CHECK
  4608.     AH = C6h
  4609. Return: AL = 55h if resident
  4610. SeeAlso: AX=C500h"VIRUS",AX=C603h
  4611. --------v-21C603-----------------------------
  4612. INT 21 - VIRUS - "Yankee Doodle" or "MLTI" - INSTALLATION CHECK
  4613.     AX = C603h
  4614.     BX = version number (002Ch or 002Dh)
  4615.     CF set
  4616. Return: CF clear if resident
  4617.     ZF set if resident and input BX matches version
  4618. SeeAlso: AX=C500h"VIRUS",AX=C700h"VIRUS"
  4619. --------N-21C700-----------------------------
  4620. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - BEGIN TRANSACTION
  4621.     AX = C700h
  4622. Return: CF clear if successful
  4623.         AL = 00h
  4624.     CF set on error
  4625.         AL = error code
  4626.         96h out of memory
  4627.         FEh implicit transaction already active, converted to explicit
  4628.         FFh explicit transaction already active
  4629. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4630. SeeAlso: AX=C701h,AX=C702h,AX=C703h,AX=F222h/SF=01h
  4631. --------v-21C700-----------------------------
  4632. INT 21 - VIRUS - "MH-757" - INSTALLATION CHECK
  4633.     AX = C700h
  4634. Return: AL = 07h if resident
  4635. SeeAlso: AX=C603h"VIRUS",AH=CBh"VIRUS"
  4636. --------N-21C701-----------------------------
  4637. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - END TRANSACTION
  4638.     AX = C701h
  4639. Return: AL = status (00h,FDh-FFh) (see #1143)
  4640.         00h successful
  4641.         CX:DX = transaction number
  4642.     CF clear except when AL=FFh
  4643. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4644. SeeAlso: AX=C700h"NetWare",AX=C703h,AX=F222h/SF=02h
  4645.  
  4646. (Table 1143)
  4647. Values for NetWare TTS status:
  4648.  00h    successful
  4649.  FDh    transaction tracking disabled
  4650.  FEh    transaction ended records locked
  4651.  FFh    no explicit transaction active
  4652. --------N-21C702-----------------------------
  4653. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - INSTALLATION CHECK
  4654.     AX = C702h
  4655. Return: AL = status
  4656.         00h not available
  4657.         01h available
  4658.         FDh available but disabled
  4659. Desc:    determine whether the default file server supports TTS
  4660. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4661. SeeAlso: AX=C700h,AX=C701h,AX=C703h,AX=F222h/SF=00h
  4662. --------N-21C703-----------------------------
  4663. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - ABORT TRANSACTION
  4664.     AX = C703h
  4665. Return: CF clear if successful
  4666.         AL = 00h
  4667.     CF set on error
  4668.         AL = error code (FDh-FFh) (see #1143)
  4669. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4670. SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C704h,AX=F222h/SF=03h
  4671. --------N-21C704-----------------------------
  4672. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - TRANSACTION STATUS
  4673.     AX = C704h
  4674.     CX:DX = transaction number (see AX=C701h)
  4675. Return: AL = status
  4676.         00h successful
  4677.         FFh not yet written to disk
  4678. Desc:    verify that a transaction has actually been written to disk
  4679. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4680.     transactions are written to disk in the order in which they are ended,
  4681.       but it may take as much as five seconds for the data to be written
  4682. SeeAlso: AX=C700h"NetWare",AX=C701h,AX=C703h,AX=F222h/SF=04h
  4683. --------N-21C705-----------------------------
  4684. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET APPLICTN THRESHOLDS
  4685.     AX = C705h
  4686. Return: AL = status
  4687.         00h successful
  4688.     CL = maximum logical record locks (default 0)
  4689.     CH = maximum physical record locks (default 0)
  4690. Desc:    get the per-application limits on record locks allowed before an
  4691.       implicit transaction is begun
  4692. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4693.     if either limit is FFh, implicit transactions are disabled for the
  4694.       corresponding lock type
  4695. SeeAlso: AX=C706h,AX=C707h,AX=F222h/SF=05h
  4696. --------N-21C706-----------------------------
  4697. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET APPLICTN THRESHOLDS
  4698.     AX = C706h
  4699.     CL = maximum logical record locks (default 0)
  4700.     CH = maximum physical record locks (default 0)
  4701. Return: AL = status
  4702.         00h successful
  4703. Desc:    specify the per-application limits on record locks allowed before an
  4704.       implicit transaction is begun
  4705. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4706.     if either limit is set to FFh, implicit transactions are disabled for
  4707.       the corresponding lock type
  4708. SeeAlso: AX=C705h,AX=C708h,AX=F222h/SF=06h
  4709. --------N-21C707-----------------------------
  4710. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - GET WORKSTN THRESHOLDS
  4711.     AX = C707h
  4712. Return: AL = status
  4713.         00h successful
  4714.     CL = maximum logical record locks (default 0)
  4715.     CH = maximum physical record locks (default 0)
  4716. Desc:    get the per-workstation limits on record locks allowed before an
  4717.       implicit transaction is begun
  4718. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4719.     if either limit is FFh, implicit transactions are disabled for the
  4720.       corresponding lock type
  4721. SeeAlso: AX=C705h,AX=C708h,AX=F222h/SF=07h
  4722. --------N-21C708-----------------------------
  4723. INT 21 - Novell NetWare - TRANSACTION TRACKING SYSTEM - SET WORKSTN THRESHOLDS
  4724.     AX = C708h
  4725.     CL = maximum logical record locks (default 0)
  4726.     CH = maximum physical record locks (default 0)
  4727. Return: AL = status
  4728.         00h successful
  4729. Desc:    specify the per-workstation limits on record locks allowed before an
  4730.       implicit transaction is begun
  4731. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  4732.     if either limit is set to FFh, implicit transactions are disabled for
  4733.       the corresponding lock type
  4734. SeeAlso: AX=C706h,AX=C707h,AX=F222h/SF=08h
  4735. --------N-21C8-------------------------------
  4736. INT 21 O - Novell NetWare - BEGIN LOGICAL FILE LOCKING
  4737.     AH = C8h
  4738.     if function C6h lock mode 00h:
  4739.         DL = mode
  4740.         00h no wait
  4741.         01h wait
  4742.     if function C6h lock mode 01h:
  4743.         BP = timeout in timer ticks (1/18 sec)
  4744. Return: AL = error code
  4745. Desc:    used to provide TTS support for applications which are not aware of
  4746.       Novell's Transaction Tracking System
  4747. Note:    this function was added in NetWare 4.0, but was removed some time prior
  4748.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4749.       documentation
  4750. SeeAlso: AH=C9h
  4751. --------N-21C9-------------------------------
  4752. INT 21 O - Novell NetWare - END LOGICAL FILE LOCKING
  4753.     AH = C9h
  4754. Return: AL = error code
  4755. Desc:    used to provide TTS support for applications which are not aware of
  4756.       Novell's Transaction Tracking System
  4757. Note:    this function was added in NetWare 4.0, but was removed some time prior
  4758.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4759.       documentation
  4760. SeeAlso: AH=C8h
  4761. --------N-21CA-------------------------------
  4762. INT 21 O - Novell NetWare, Alloy NTNX - LOG/LOCK PERSONAL FILE (FCB)
  4763.     AH = CAh
  4764.     DS:DX -> FCB (see #0693 at AH=0Fh)
  4765.     if function C6h lock mode 01h:
  4766.         AL = log and lock flag
  4767.         00h log file only
  4768.         01h lock as well as log file
  4769.         BP = lock timeout in timer ticks (1/18 sec)
  4770. Return: AL = error code
  4771.         00h successful
  4772.         96h no dynamic memory for file
  4773.         FEh timeout
  4774.         FFh failed
  4775. Desc:    provides file locking support for FCBs
  4776. Note:    this function was added in NetWare 4.0, but was removed some time prior
  4777.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4778.       documentation
  4779. SeeAlso: AH=CBh
  4780. --------v-21CA15-----------------------------
  4781. INT 21 - VIRUS - "Piter" - ???
  4782.     AX = CA15h
  4783.     ???
  4784. Return: ???
  4785. SeeAlso: AH=CCh"VIRUS"
  4786. --------N-21CB-------------------------------
  4787. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK FILE SET
  4788.     AH = CBh
  4789.     if function C6h lock mode 00h:
  4790.         DL = mode (00h no wait, 01h wait)
  4791.     if function C6h lock mode 01h:
  4792.         BP = lock timeout in timer ticks (1/18 sec), 0000h = no wait
  4793. Return: AL = status (00h,FEh,FFh) (see #1144)
  4794. Desc:    attempt to lock all files listed in the log table
  4795. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  4796.       Alloy NTNX
  4797.     status FFh will be returned if one or more of the files have already
  4798.       been exclusively locked by another process
  4799. SeeAlso: AH=CAh,AH=CDh,AH=D1h,AH=EBh
  4800.  
  4801. (Table 1144)
  4802. Values for NetWare status:
  4803.  00h    successful
  4804.  FEh    timed out
  4805.  FFh    failed
  4806. --------v-21CB-------------------------------
  4807. INT 21 - VIRUS - "Milous" - INSTALLATION CHECK
  4808.     AH = CBh
  4809. Return: AL = 07h if resident
  4810. SeeAlso: AX=C700h"VIRUS",AX=CB02h
  4811. --------v-21CB02-----------------------------
  4812. INT 21 - VIRUS - "Witcode" - INSTALLATION CHECK
  4813.     AX = CB02h
  4814. Return: AX = 02CBh if resident
  4815. SeeAlso: AH=CBh"VIRUS",AH=CCh"VIRUS"
  4816. --------N-21CC-------------------------------
  4817. INT 21 O - Novell NetWare, Alloy NTNX - RELEASE FILE (FCB)
  4818.     AH = CCh
  4819.     DS:DX -> FCB (see #0693 at AH=0Fh)
  4820. Return: none
  4821. Desc:    unlocks file, but does not remove it from the log table or close it
  4822. Note:    this function was added in NetWare 4.0, but was removed some time prior
  4823.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4824.       documentation
  4825. SeeAlso: AH=CAh,AH=CDh
  4826. --------v-21CC-------------------------------
  4827. INT 21 - VIRUS - "Westwood" - INSTALLATION CHECK
  4828.     AH = CCh
  4829. Return: AX = 0700h if resident
  4830. SeeAlso: AX=CB02h,AH=CDh"VIRUS",AX=D000h"VIRUS"
  4831. --------N-21CD-------------------------------
  4832. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE FILE SET
  4833.     AH = CDh
  4834. Return: none
  4835. Desc:    unlock all files listed in the log table, but don't remove them from
  4836.       the table
  4837. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  4838.       Alloy NTNX
  4839. SeeAlso: AH=CBh,AH=CCh,AH=CFh,AH=D3h
  4840. --------v-21CD-------------------------------
  4841. INT 21 - VIRUS - "Westwood" - ???
  4842.     AH = CDh
  4843.     ???
  4844. Return: ???
  4845. SeeAlso: AH=CCh"VIRUS"
  4846. --------N-21CE-------------------------------
  4847. INT 21 O - Novell NetWare, Alloy NTNX - CLEAR FILE (FCB)
  4848.     AH = CEh
  4849.     DS:DX -> FCB (see #0693 at AH=0Fh)
  4850. Return: AL = error code
  4851. Desc:    unlocks file and removes it from log table, then closes all opened and
  4852.       logged occurrences
  4853. Note:    this function was added in NetWare 4.0, but was removed some time prior
  4854.       to Advanced NetWare 2.15, and is no longer listed in current Novell
  4855.       documentation
  4856. SeeAlso: AH=CAh,AH=CFh,AH=EDh"NetWare"
  4857. --------N-21CF-------------------------------
  4858. INT 21 - LANstep - ???
  4859.     AH = CFh
  4860.     ???
  4861. Return: ???
  4862. Program: LANstep is a redesign of the Waterloo Microsystems PORT network
  4863. --------N-21CF-------------------------------
  4864. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR FILE SET
  4865.     AH = CFh
  4866. Return: AL = 00h
  4867. Desc:    unlock and remove all files from log table
  4868. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  4869.       Alloy NTNX
  4870. SeeAlso: AH=CAh,AH=CEh,AH=EBh"NetWare"
  4871. --------N-21D0-------------------------------
  4872. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOG LOGICAL RECORD
  4873.     AH = D0h
  4874.     DS:DX -> record string (counted string, max 99 data bytes)
  4875.     if function C6h lock mode 01h: (Novell, NTNX only)
  4876.         AL = flags
  4877.         bit 0: lock as well as log the record
  4878.         bit 1: non-exclusive lock
  4879.         BP = lock timeout in timer ticks (1/18 sec)
  4880. Return: AL = status
  4881.         00h successful
  4882.         96h no dynamic memory for file
  4883.         FEh timed out
  4884.         FFh unsuccessful
  4885. Desc:    add the specified logical record name to the log table, and optionally
  4886.       lock the record
  4887. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
  4888.       Banyan VINES, and Alloy NTNX
  4889.     locks on logical record names are advisory and may be ignored by other
  4890.       applications
  4891. SeeAlso: AH=BCh,AH=D1h,AH=D2h,AH=D4h,AH=EBh
  4892. --------v-21D0-------------------------------
  4893. INT 21 - VIRUS - "MALAGA" - INSTALLATION CHECK
  4894.     AH = D0h
  4895. Return: AX = 00D0h if resident
  4896. SeeAlso: AH=B3h"VIRUS",AX=D000h"VIRUS"
  4897. --------v-21D000-----------------------------
  4898. INT 21 - VIRUS - "Fellowship" - INSTALLATION CHECK
  4899.     AX = D000h
  4900. Return: BX = 1234h if resident
  4901. SeeAlso: AH=CCh"VIRUS",AH=D0h"VIRUS",AX=D000h"Warlock",AH=D5h"VIRUS",AX=D5AAh
  4902. --------v-21D000-----------------------------
  4903. INT 21 - VIRUS - "Warlock" - INSTALLATION CHECK
  4904.     AX = D000h
  4905.     CF clear
  4906. Return: CF set if resident (normal DOS return would be CF clear)
  4907. SeeAlso: AX=D000h"VIRUS",AH=D5h"VIRUS"
  4908. --------N-21D1-------------------------------
  4909. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - LOCK LOGICAL RECORD SET
  4910.     AH = D1h
  4911.     AL = lock type (00h exclusive, 01h shareable)
  4912.     if function C6h lock mode 00h:
  4913.         DL = mode (00h no wait, 01h wait)
  4914.     if function C6h lock mode 01h: (Novell only)
  4915.         BP = lock timeout in timer ticks (1/18 sec), 0000h no wait
  4916. Return: AL = status (see #1144)
  4917. Desc:    attempt to lock all logical record names listed in the log table
  4918. Notes:    this function is supported by NetWare 4.6+, Advanced NetWare 1.0+,
  4919.       Banyan VINES, and Alloy NTNX
  4920.     status FFh will be returned if one or more logical records have been
  4921.       exclusively locked by another process
  4922.     locks on logical record names are advisory and may be ignored by other
  4923.       applications
  4924. SeeAlso: AH=C2h,AH=CBh,AH=D0h,AH=D3h,AH=D5h
  4925. --------N-21D2-------------------------------
  4926. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD
  4927.     AH = D2h
  4928.     DS:DX -> semaphore identifier (counted string up to 99 chars long)
  4929. Return: AL = status
  4930.         00h successful
  4931.         FFh no such record
  4932. Desc:    unlock the logical record name but do not remove it from the log table
  4933. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  4934.       Banyan VINES, and Alloy NTNX
  4935.     locks on logical record names are advisory and may be ignored by other
  4936.       applications
  4937. SeeAlso: AH=BDh,AH=D0h,AH=D3h,AH=D4h
  4938. --------v-21D2-------------------------------
  4939. INT 21 - VIRUS???
  4940.     AH = D2h
  4941.     ???
  4942. Return: ???
  4943. Note:    this call is intercepted by the Search&Destroy SDRes v27.03 bundled
  4944.       with Novell DOS 7, and is presumably some virus's installation check
  4945. SeeAlso: AH=4Ah/BX=00B6h
  4946. --------N-21D3-------------------------------
  4947. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - RELEASE LOGICAL RECORD SET
  4948.     AH = D3h
  4949. Desc:    unlock all currently-locked logical record names in the log table, but
  4950.       do not remove them from the table
  4951. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  4952.       Banyan VINES, and Alloy NTNX
  4953.     locks on logical record names are advisory and may be ignored by other
  4954.       applications
  4955. SeeAlso: AH=C3h,AH=CDh,AH=D1h,AH=D2h,AH=D5h
  4956. --------N-21D4-------------------------------
  4957. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD
  4958.     AH = D4h
  4959.     DS:DX -> logical record name (counted string up to 99 chars long)
  4960. Return: AL = status (00h,FFh) (see #1145)
  4961. Desc:    unlock and remove the logical record name from the log table
  4962. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  4963.       Banyan VINES, and Alloy NTNX
  4964.     locks on logical record names are advisory and may be ignored by other
  4965.       applications
  4966. SeeAlso: AH=BEh,AH=D0h,AH=D2h,AH=D5h
  4967.  
  4968. (Table 1145)
  4969. Values for NetWare status:
  4970.  00h    successful
  4971.  FFh    no such record name
  4972. --------N-21D5-------------------------------
  4973. INT 21 - Novell NetWare - SYNCHRONIZATION SERVICES - CLEAR LOGICAL RECORD SET
  4974.     AH = D5h
  4975. Return: AL = error code (00h,FFh) (see #1145)
  4976. Desc:    unlock and remove all logical record name from the log table
  4977. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+,
  4978.       Banyan VINES, and Alloy NTNX
  4979.     locks on logical record names are advisory and may be ignored by other
  4980.       applications
  4981. SeeAlso: AH=D1h,AH=D3h,AH=D4h
  4982. --------v-21D5-------------------------------
  4983. INT 21 - VIRUS - "Carfield" - ???
  4984.     AH = D5h
  4985.     ???
  4986. Return: ???
  4987. SeeAlso: AX=D5AAh,AH=F3h"Carfield"
  4988. --------v-21D5AA-----------------------------
  4989. INT 21 - VIRUS - "Diamond-A", "Diamond-B" - INSTALLATION CHECK
  4990.     AX = D5AAh
  4991. Return: AX = 2A55h if "Diamond-A" resident
  4992.     AX = 2A03h if "Diamond-B"-family virus resident
  4993. SeeAlso: AX=D000h,AH=D5h"VIRUS",AX=D5AAh/BP=DEAAh
  4994. --------v-21D5AABPDEAA-----------------------
  4995. INT 21 - VIRUS - "Dir" - INSTALLATION CHECK
  4996.     AX = D5AAh
  4997.     BP = DEAAh
  4998. Return: SI = 4321h if resident
  4999. SeeAlso: AX=D5AAh,AX=DADAh"VIRUS"
  5000. --------N-21D6-------------------------------
  5001. INT 21 - Novell NetWare - WORKSTATION - END OF JOB
  5002.     AH = D6h
  5003.     BX = job flag (0000h current job, FFFFh all processes on workstation)
  5004. Return: AL = error code
  5005. Desc:    unlocks and clears all locked or logged files and records held by the
  5006.       process(es), closes all files, resets error and lock modes, and
  5007.       releases all network resources
  5008. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5009.       Alloy NTNX
  5010. SeeAlso: AH=BBh"NetWare",AH=D7h
  5011. --------N-21D7-------------------------------
  5012. INT 21 - Novell NetWare - CONNECTION SERVICES - SYSTEM LOGOUT
  5013.     AH = D7h
  5014. Return: AL = error code
  5015. Desc:    this function closes the caller's open files, logs it out from all
  5016.       file servers, detaches the workstation from all non-default file
  5017.       servers, and maps a drive to the default server's SYS:LOGIN directory
  5018. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5019.       Alloy NTNX
  5020. SeeAlso: AH=D6h,AH=E3h/SF=14h,AH=F1h"NetWare"
  5021. --------N-21D8-------------------------------
  5022. INT 21 - Novell NetWare, Banyan VINES - ALLOCATE RESOURCE
  5023.     AH = D8h
  5024.     DL = resource number
  5025. Return: AL = status (00h successful, FFh unsucessful)
  5026. Note:    this function is no longer used or supported by NetWare, and is not
  5027.       documented in Novell documents
  5028. SeeAlso: AH=D9h
  5029. --------N-21D9-------------------------------
  5030. INT 21 - Novell NetWare, Banyan VINES - DEALLOCATE RESOURCE
  5031.     AH = D9h
  5032.     DL = resource number
  5033. Return: AL = status (00h successful, FFh unsucessful)
  5034. Note:    this function is no longer used or supported by NetWare, and is not
  5035.       documented in Novell documents
  5036. SeeAlso: AH=D8h
  5037. --------N-21DA-------------------------------
  5038. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH NUMBER
  5039.     AH = DAh
  5040.     DL = volume number
  5041.     ES:DI -> reply buffer (see #1146)
  5042. Return: AL = 00h
  5043. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5044.     operator console rights are not required to make this call
  5045.     reported total blocks and total unused blocks include the Hot Fix
  5046.       Table; the NetWare shell's implementation of INT 21/AH=36h will
  5047.       report values larger than 268MB as 268MB.
  5048. SeeAlso: AH=36h,AH=E2h/SF=15h,AH=E3h/SF=E9h
  5049.  
  5050. Format of NetWare reply buffer:
  5051. Offset    Size    Description    (Table 1146)
  5052.  00h    WORD    sectors/block
  5053.  02h    WORD    total blocks on volume
  5054.  04h    WORD    unused blocks
  5055.  06h    WORD    total directory entries
  5056.  08h    WORD    unused directory entries
  5057.  0Ah 16 BYTEs    volume name, null padded
  5058.  1Ah    WORD    removable flag, 0000h = not removable
  5059. Note:    all words are big-endian
  5060. --------v-21DADA-----------------------------
  5061. INT 21 - VIRUS - "Gotcha" - INSTALLATION CHECK
  5062.     AX = DADAh
  5063. Return: AH = A5h
  5064. SeeAlso: AX=D5AAh,AX=DAFEh"VIRUS"
  5065. --------v-21DAFE-----------------------------
  5066. INT 21 - VIRUS - "Plovdiv 1.3" - INSTALLATION CHECK
  5067.     AX = DAFEh
  5068. Return: AX = 1234h if resident
  5069. SeeAlso: AX=DADAh,AH=DDh"VIRUS",AH=DEh"VIRUS"
  5070. --------N-21DB-------------------------------
  5071. INT 21 - Novell NetWare - WORKSTATION - GET NUMBER OF LOCAL DRIVES
  5072.     AH = DBh
  5073. Return: AL = number of local disks as set by LASTDRIVE in CONFIG.SYS
  5074. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5075.       Alloy NTNX
  5076. SeeAlso: AH=0Eh
  5077. --------N-21DC-------------------------------
  5078. INT 21 - Novell NetWare - CONNECTION SERVICES - GET CONNECTION NUMBER
  5079.     AH = DCh
  5080. Return: AL = logical connection number
  5081.         00h if NetWare not loaded or this machine is a non-dedicated server
  5082.     CX = station number in ASCII (CL = first digit)
  5083. Notes:    this function is supported by NetWare 4.0+, Banyan VINES, and Alloy
  5084.       NTNX
  5085.     station number only unique for those PCs connected to same semaphore
  5086.       service
  5087. SeeAlso: AH=F2h"NetWare"
  5088. --------d-21DC-------------------------------
  5089. INT 21 - PCMag PCMANAGE/DCOMPRES - TURN ON/OFF
  5090.     AH = DCh
  5091.     DX = state
  5092.         0000h turn on
  5093.         0001h turn off
  5094. SeeAlso: AX=FEDCh
  5095. --------v-21DC28-----------------------------
  5096. INT 21 - VIRUS - "Monika" - INSTALLATION CHECK
  5097.     AX = DC28h
  5098. Return: AX = 1973h if resident
  5099. SeeAlso: AX=D000h"VIRUS",AX=DCBAh"VIRUS"
  5100. --------v-21DCBA-----------------------------
  5101. INT 21 - VIRUS - "Red Spider" - INSTALLATION CHECK
  5102.     AX = DCBAh
  5103. Return: AX = ABCDh if resident
  5104. SeeAlso: AX=DC28h"VIRUS",AX=DEFEh"VIRUS"
  5105. --------N-21DD-------------------------------
  5106. INT 21 - Novell NetWare - WORKSTATION - SET NetWare ERROR MODE
  5107.     AH = DDh
  5108.     DL = error mode
  5109.         00h invoke INT 24 on critical I/O errors (default)
  5110.         01h return NetWare extended error code in AL
  5111.         02h return error code in AL, mapped to standard DOS error codes
  5112. Return: AL = previous error mode
  5113. Note:    this function is supported by Advanced NetWare 2.0+
  5114. SeeAlso: INT 24
  5115. --------v-21DD-------------------------------
  5116. INT 21 - VIRUS - "Jerusalem"-family - RELOCATE VIRUS???
  5117.     AH = DDh
  5118.     CX = number of bytes to copy
  5119.     DS:SI -> source of copy
  5120.     ES:DI -> destination of copy
  5121. Return: does not return normally; return address is caller's CS:0100h with
  5122.       AX = ???
  5123. SeeAlso: AX=DDEFh,AH=E0h"VIRUS",AH=EEh"VIRUS"
  5124. --------v-21DDEF------------------------
  5125. INT 21 - VIRUS- "GOLGI" - INSTALLATION CHECK
  5126.     AX = DDEFh
  5127. Return: AX = EFDDh if resident
  5128. SeeAlso: AH=DDh"VIRUS",AH=DEh"VIRUS"
  5129. --------v-21DE-------------------------------
  5130. INT 21 - VIRUS - "Durban" - INSTALLATION CHECK
  5131.     AH = DEh
  5132. Return: AH = DFh if resident
  5133. SeeAlso: AX=DAFEh,AX=DDEFh,AH=DEh"April 1st",AX=DEADh"90210"
  5134. --------v-21DE-------------------------------
  5135. INT 21 - VIRUS - "April 1st EXE" - ???
  5136.     AH = DEh
  5137.     ???
  5138. Return: ???
  5139. SeeAlso: AH=DEh"Durban",AX=DEADh"90210"
  5140. --------N-21DE-------------------------------
  5141. INT 21 - Novell NetWare - MESSAGE SERVICES - SET BROADCAST MODE
  5142.     AH = DEh
  5143.     DL = broadcast mode
  5144.         00h receive server and workstation broadcasts (default)
  5145.         01h receive server broadcasts, discard user messages
  5146.         02h store server broadcasts for retrieval
  5147.         03h store all broadcasts for retrieval
  5148. Return: AL = new broadcast mode
  5149. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5150. --------N-21DE--DL04-------------------------
  5151. INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MODE
  5152.     AH = DEh
  5153.     DL = 04h
  5154. Return: AL = current broadcast mode
  5155.         00h receive server and workstation broadcasts (default)
  5156.         01h receive server broadcasts, discard user message
  5157.         02h store server broadcasts for retrieval
  5158.         03h store all broadcasts for retrieval
  5159. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5160. --------N-21DE-------------------------------
  5161. INT 21 - Novell NetWare - SHELL TIMER INTERRUPT CHECKS
  5162.     AH = DEh
  5163.     DL = function
  5164.         05h disable shell timer interrupt checks
  5165.         06h enable shell timer interrupt checks
  5166. Return: ???
  5167. Note:    this function was added in NetWare 4.0, but is not listed in current
  5168.       Novell documentation and is probably no longer supported
  5169. --------v-21DEAD------------------------
  5170. INT 21 - VIRUS - "90210" - INSTALLATION CHECK
  5171.     AX = DEADh
  5172. Return: AX = AAAAh if resident
  5173. SeeAlso: AH=DEh"April 1st",AX=DEADh"Shifting",AX=DEDEh"VIRUS"
  5174. --------v-21DEAD------------------------
  5175. INT 21 - VIRUS - "Shifting Objective" - RELOCATE CODE ???
  5176.     AX = DEADh
  5177. SeeAlso: AX=FEADh
  5178. SeeAlso: AX=DEADh"90210",AX=DEDEh"VIRUS"
  5179. --------v-21DEDE-----------------------------
  5180. INT 21 - VIRUS - "Brothers" - INSTALLATION CHECK
  5181.     AX = DEDEh
  5182. Return: AH = 41h if resident
  5183. SeeAlso: AX=DEADh"Shifting",AX=DEFEh"VIRUS"
  5184. --------v-21DEFE-----------------------------
  5185. INT 21 - VIRUS - "Maze" - INSTALLATION CHECK
  5186.     AX = DEFEh
  5187. Return: AX = ABCDh if resident
  5188. SeeAlso: AX=DCBAh"VIRUS",AX=DEDEh"VIRUS",AH=E0h"VIRUS"
  5189. --------N-21DF--DL00-------------------------
  5190. INT 21 - Novell NetWare - PRINT SERVICES - START LPT CAPTURE
  5191.     AH = DFh
  5192.     DL = 00h
  5193. Return: AL = status
  5194.         00h successful
  5195. Desc:    this function redirects the default LPT to a capture file on the file
  5196.       server
  5197. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5198.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  5199.     a print job is queued when the first character of output is captured
  5200. SeeAlso: AX=B800h,AX=B804h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=03h
  5201. SeeAlso: AH=DFh/DL=04h,AX=F003h
  5202. --------N-21DF--DL01-------------------------
  5203. INT 21 - Novell NetWare - PRINT SERVICES - END LPT CAPTURE
  5204.     AH = DFh
  5205.     DL = 01h
  5206. Return: AL = status
  5207.         00h successful
  5208. Desc:    stop redirecting the default LPT, close the capture file, and release
  5209.       the job in the print queue for printing
  5210. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5211.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  5212.     after this call, the default LPT defaults to local printing
  5213. SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=02h,AH=DFh/DL=03h,AH=DFh/DL=05h
  5214. --------N-21DF--DL02-------------------------
  5215. INT 21 - Novell NetWare - PRINT SERVICES - CANCEL LPT CAPTURE
  5216.     AH = DFh
  5217.     DL = 02h
  5218. Return: AL = status
  5219.         00h successful
  5220. Desc:    this function ends the capture of the default LPT, removes the job from
  5221.       the print queue, and deletes the capture file unless it is a
  5222.       permanent capture file
  5223. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5224.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  5225.     after this call, the default LPT defaults to local printing
  5226. SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=06h
  5227. --------N-21DF--DL03-------------------------
  5228. INT 21 - Novell NetWare - PRINT SERVICES - FLUSH LPT CAPTURE
  5229.     AH = DFh
  5230.     DL = 03h
  5231. Return: AL = status
  5232.         00h successful
  5233. Desc:    this function closes the current capture file for the default LPT
  5234.       and starts printing it if it is not a permanent capture file
  5235. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5236.       Alloy NTNX; under NTNX, it sends a print break (see INT 17/AH=84h)
  5237.     if more data is sent to the LPT port after this call, a new capture
  5238.       file will be opeend
  5239. SeeAlso: AH=DFh/DL=00h,AH=DFh/DL=01h,AH=DFh/DL=02h,AH=DFh/DL=07h
  5240. --------N-21DF--DL04-------------------------
  5241. INT 21 - Novell NetWare - PRINT SERVICES - START SPECIFIC LPT CAPTURE
  5242.     AH = DFh
  5243.     DL = 04h
  5244.     DH = LPT port (00h-02h)
  5245. Return: AL = status
  5246.         00h successful
  5247. Desc:    this function redirects the specified LPT to a capture file on the file
  5248.       server
  5249. Notes:    this function is supported by Advanced NetWare 2.1+
  5250.     a print job is queued when the first character of output is captured
  5251. SeeAlso: AX=B800h,AH=DFh/DL=00h,AH=DFh/DL=05h,AH=DFh/DL=06h,AH=DFh/DL=07h
  5252. SeeAlso: AX=F003h
  5253. --------N-21DF--DL05-------------------------
  5254. INT 21 - Novell NetWare - PRINT SERVICES - END SPECIFIC LPT CAPTURE
  5255.     AH = DFh
  5256.     DL = 05h
  5257.     DH = LPT port (00h-02h)
  5258. Return: AL = status
  5259.         00h successful
  5260. Desc:    stop redirecting the specified LPT, close the capture file, and release
  5261.       the job in the print queue for printing
  5262. Notes:    this function is supported by Advanced NetWare 2.1+
  5263.     after this call, the specified LPT defaults to local printing
  5264. SeeAlso: AH=DFh/DL=01h,AH=DFh/DL=04h,AH=DFh/DL=06h,AH=DFh/DL=07h
  5265. --------N-21DF--DL06-------------------------
  5266. INT 21 - Novell NetWare - PRINT SERVICES - CANCEL SPECIFIC LPT CAPTURE
  5267.     AH = DFh
  5268.     DL = 06h
  5269.     DH = LPT port (00h-02h)
  5270. Return: AL = status
  5271.         00h successful
  5272. Desc:    this function ends the capture of the specified LPT, removes the job
  5273.       from the print queue, and deletes the capture file unless it is a
  5274.       permanent capture file
  5275. Notes:    this function is supported by Advanced NetWare 2.1+
  5276.     after this call, the specified LPT defaults to local printing
  5277. SeeAlso: AH=DFh/DL=02h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=07h
  5278. --------N-21DF--DL07-------------------------
  5279. INT 21 - Novell NetWare - PRINT SERVICES - FLUSH SPECIFIC LPT CAPTURE
  5280.     AH = DFh
  5281.     DL = 07h
  5282.     DH = LPT port (00h-02h)
  5283. Return: AL = status
  5284.         00h successful
  5285. Desc:    this function closes the current capture file for the specified LPT
  5286.       and starts printing it if it is not a permanent capture file
  5287. Notes:    this function is supported by Advanced NetWare 2.1+
  5288.     if more data is sent to the LPT port after this call, a new capture
  5289.       file will be opeend
  5290. SeeAlso: AH=DFh/DL=03h,AH=DFh/DL=04h,AH=DFh/DL=05h,AH=DFh/DL=06h
  5291. --------T-21DF00DX534C-----------------------
  5292. INT 21 U - Software Carousel - INSTALLATION CHECK
  5293.     AX = DF00h
  5294.     DX = 534Ch ("SL")
  5295.     DI = 534Ch ("SL")
  5296. Return: AX = 00FFh if installed
  5297.         ???
  5298. Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
  5299. --------T-21DF01-----------------------------
  5300. INT 21 - Software Carousel - SWITCH TO ANOTHER TASK
  5301.     AX = DF01h
  5302.     BL = task number (00h = next task)
  5303. Return: AL = status
  5304.         00h Carousel not running
  5305.         01h successful
  5306.         FFh unsucessful
  5307.         AH = error code (01h,02h) (see #1147)
  5308.  
  5309. (Table 1147)
  5310. Values for Software Carousel error code:
  5311.  00h    invalid subfunction in AL
  5312.  01h    invalid task number
  5313.  02h    tried to switch to task with no memory size
  5314.  03h    tried to kill program in partition with no program running
  5315.  04h    tried to change size of an active memory partition
  5316.  05h    invalid memory size
  5317.  06h    tried to send command to task with a pending previous command
  5318. --------T-21DF02-----------------------------
  5319. INT 21 - Software Carousel - KILL PROGRAM IN MEMORY PARTITION
  5320.     AX = DF02h
  5321.     BL = task number
  5322. Return: AL = status
  5323.         00h Carousel not running
  5324.         01h successful
  5325.         FFh unsucessful
  5326.         AH = error code (01h,03h) (see #1147)
  5327. --------T-21DF03-----------------------------
  5328. INT 21 - Software Carousel - GET PARTITION SIZE AND PROGRAM STATUS
  5329.     AX = DF03h
  5330.     BL = task number
  5331. Return: AL = status
  5332.         00h Carousel not running
  5333.         01h successful
  5334.         BL = partition state (00h no program running, 01h prog running)
  5335.         DX = partition size in KB
  5336.         FFh unsucessful
  5337.         AH = error code (01h) (see #1147)
  5338. SeeAlso: AX=DF05h
  5339. --------T-21DF04-----------------------------
  5340. INT 21 - Software Carousel - GET PARTITION NAME
  5341.     AX = DF04h
  5342.     BL = task number
  5343. Return: AL = status
  5344.         00h Carousel not running
  5345.         01h successful
  5346.         CX = length of name (00h if default partition name)
  5347.         ES:BX -> partition name (if CX nonzero)
  5348.         FFh unsucessful
  5349.         AH = error code (01h) (see #1147)
  5350. SeeAlso: AX=DF06h
  5351. --------T-21DF05-----------------------------
  5352. INT 21 - Software Carousel - CHANGE PARTITION SIZE
  5353.     AX = DF05h
  5354.     BL = task number
  5355.     DX = new size in KB
  5356. Return: AL = status
  5357.         00h Carousel not running
  5358.         01h successful
  5359.         FFh unsucessful
  5360.         AH = error code (01h,04h,05h) (see #1147)
  5361.     BX = minimum size allowed
  5362.     CX = maximum size available
  5363. SeeAlso: AX=DF03h
  5364. --------T-21DF06-----------------------------
  5365. INT 21 - Software Carousel - CHANGE PARTITION NAME
  5366.     AX = DF06h
  5367.     BL = task number
  5368.     CX = length of new name (00h to use default, max 18h)
  5369.     DS:SI -> new name
  5370. Return: AL = status
  5371.         00h Carousel not running
  5372.         01h successful
  5373.         FFh unsucessful
  5374.         AH = error code (01h) (see #1147)
  5375. SeeAlso: AX=DF04h
  5376. --------T-21DF07-----------------------------
  5377. INT 21 - Software Carousel - SEND COMMAND TO MEMORY SECTION
  5378.     AX = DF07h
  5379.     BL = task number
  5380.     CX = length of command (max 8 chars)
  5381.     DS:SI -> command line
  5382. Return: AL = status
  5383.         00h Carousel not running
  5384.         01h successful
  5385.         FFh unsucessful
  5386.         AH = error code (01h,06h) (see #1147)
  5387. Note:    the maximum length seems too small and may be a typo for 80 characters
  5388. --------T-21DF08-----------------------------
  5389. INT 21 - Software Carousel - SELECTIVELY ENABLE/DISABLE MENU AND SWITCHING
  5390.     AX = DF08h
  5391.     BL = new state of keyboard (00h disabled, 01h enabled)
  5392. Return: AL = status
  5393.         00h Carousel not running
  5394.         01h successful
  5395. Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
  5396. Note:    when the keyboard is is disabled, the user may neither access the
  5397.       Carousel menu nor switch to another memory section
  5398. --------T-21DF09-----------------------------
  5399. INT 21 - Software Carousel - BOOT THE SYSTEM
  5400.     AX = DF09h
  5401. Return: AL = status
  5402.         00h Carousel not running
  5403.         FFh unsucessful
  5404.         AH = error code (01h,03h) (see #1147)
  5405. Note:    this function never returns if successful
  5406. --------T-21DF0A-----------------------------
  5407. INT 21 - Software Carousel - GET MEMORY SIZE/PARTITION NUMBER OF CURRENT TASK
  5408.     AX = DF0Ah
  5409. Return: AL = status
  5410.         00h Carousel not running
  5411.         01h successful
  5412.         BL = task number
  5413.         DX = memory size in KB
  5414.         FFh unsucessful
  5415.         AH = error code (01h,03h) (see #1147)
  5416. --------T-21DF0B-----------------------------
  5417. INT 21 - Software Carousel - SET TASK SWITCH CALLBACK
  5418.     AX = DF0Bh
  5419.     BH = interrupt number or 00h
  5420.     BL = function number to invoke on partition switch
  5421.     CL = function number to call when it is safe for resident programs
  5422.         to perform DOS calls
  5423.     DS:DX -> FAR function to call if BH=00h
  5424. Return: AL = status
  5425.         00h Carousel not running
  5426.         01h successful
  5427.         FFh unsucessful
  5428.         AH = error code (01h,03h) (see #1147)
  5429. Notes:    the specified interrupt or FAR function is called with AH set to the
  5430.       appropriate one of the values specified in BL and CL, and BL set to
  5431.       the new task number
  5432.     the function specified by CL will not be called until the notification
  5433.       is enabled with AX=DF0Ch
  5434. SeeAlso: AX=DF0Ch
  5435. --------T-21DF0C-----------------------------
  5436. INT 21 - Software Carousel - ENABLE DOS-CALL SAFETY NOTIFICATION
  5437.     AX = DF0Ch
  5438. Return: AL = status
  5439.         00h Carousel not running
  5440.         01h successful
  5441. Program: Software Carousel is a task switcher by SoftLogic Solutions, Inc.
  5442. SeeAlso: AX=DF0Bh
  5443. --------O-21E0-------------------------------
  5444. INT 21 - Digital Research DOS Plus - CALL BDOS
  5445.     AH = E0h
  5446.     CL = BDOS function number (see #3268 at INT E0"CP/M")
  5447.     other registers as appropriate for function
  5448. Return: as appropriate for function
  5449. SeeAlso: AX=4459h,INT E0"CP/M"
  5450. --------E-21E0-------------------------------
  5451. INT 21 - OS/286, OS/386 - INITIALIZE REAL PROCEDURE
  5452.     AH = E0h
  5453.     ???
  5454. Return: ???
  5455. SeeAlso: AH=E1h"OS/286"
  5456. --------T-21E0-------------------------------
  5457. INT 21 - DoubleDOS - MENU CONTROL
  5458.     AH = E0h
  5459.     AL = subfunction
  5460.         01h exchange tasks
  5461.         73h resume invisible job if suspended
  5462.         74h kill other job
  5463.         75h suspend invisible job
  5464. Note:    identical to AH=F0h
  5465. SeeAlso: AH=F0h"DoubleDOS"
  5466. --------v-21E0-------------------------------
  5467. INT 21 - VIRUS - "Jerusalem", "Armagedon" - INSTALLATION CHECK
  5468.     AH = E0h
  5469. Return: AX = 0300h if "Jerusalem" resident
  5470.     AX = DADAh if "Armagedon" resident
  5471. SeeAlso: AH=DEh"VIRUS",AX=DEDEh"VIRUS",AX=E00Fh
  5472. --------N-21E0-------------------------------
  5473. INT 21 - Novell NetWare, Alloy NTNX - PRINT SPOOLING
  5474.     AH = E0h
  5475.     DS:SI -> request buffer (see #1148)
  5476.     ES:DI -> reply buffer
  5477. Return: AL = status
  5478. Note:    this function was added in NetWare 4.0, but is no longer listed in
  5479.       current Novell documentation and may no longer be supported
  5480. SeeAlso: AH=E3h/SF=68h,AX=F211h/SF=06h,AX=F211h/SF=0Ah
  5481.  
  5482. Format of NetWare print spooling request buffer:
  5483. Offset    Size    Description    (Table 1148)
  5484.  00h    WORD    length of following data
  5485.  02h    BYTE    subfunction
  5486.         00h spool data to a capture file
  5487.         01h close and queue capture file
  5488.         02h set spool flags
  5489.         03h spool existing file
  5490.         04h get spool queue entry
  5491.         05h remove entry from spool queue
  5492.  03h    ???
  5493. SeeAlso: #1437
  5494. --------N-21E0--SF06-------------------------
  5495. INT 21 - Novell NetWare - PRINT SERVICES - GET PRINTER STATUS
  5496.     AH = E0h subfn 06h
  5497.     DS:SI -> request buffer (see #1149)
  5498.     ES:DI -> reply buffer (see #1150)
  5499. Return: AL = status
  5500.         00h successful
  5501.         FFh no such printer
  5502. Desc:    get current state of specified printer attached to the server
  5503. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5504.       Alloy NTNX
  5505.  
  5506. Format of NetWare "Get Printer Status" request buffer:
  5507. Offset    Size    Description    (Table 1149)
  5508.  00h    WORD    0002h (length of following data)
  5509.  02h    BYTE    06h (subfunction "Get Printer Status")
  5510.  03h    BYTE    printer number (00h-04h)
  5511. SeeAlso: #1150
  5512.  
  5513. Format of NetWare "Get Printer Status" reply buffer:
  5514. Offset    Size    Description    (Table 1150)
  5515.  00h    WORD    (call) 0004h (size of following results buffer)
  5516.  02h    BYTE    flag: 00h printer active, FFh printer halted
  5517.  03h    BYTE    flag: 00h printer online, 01h printer offline
  5518.  04h    BYTE    current form type
  5519.  05h    BYTE    target printer number (00h-04h)
  5520.         same as number in request buffer unless rerouted by server
  5521.           console
  5522. SeeAlso: #1149
  5523. --------N-21E0--SF09-------------------------
  5524. INT 21 - Novell NetWare - PRINT SERVICES - SPECIFY CAPTURE FILE
  5525.     AH = E0h subfn 09h
  5526.     DS:SI -> request buffer (see #1151)
  5527.     ES:DI -> reply buffer (see #1152)
  5528. Return: AL = status
  5529.         00h successful
  5530.         9Ch invalid path
  5531. Desc:    create a permanent capture file for the next print capture to be
  5532.       started
  5533. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5534.       Alloy NTNX
  5535.     the caller must have read, write, and create rights for the directory
  5536.       containing the capture file
  5537.  
  5538. Format of NetWare "Specify Capture File" request buffer:
  5539. Offset    Size    Description    (Table 1151)
  5540.  00h    WORD    length of following data (max 102h)
  5541.  02h    BYTE    09h (subfunction "Specify Capture File")
  5542.  03h    BYTE    directory handle or 00h
  5543.  04h    BYTE    length of filename
  5544.  05h  N BYTEs    name of capture file
  5545. SeeAlso: #1152
  5546.  
  5547. Format of NetWare reply buffer:
  5548. Offset    Size    Description    (Table 1152)
  5549.  00h    WORD    (call) 0000h (no results returned)
  5550. SeeAlso: #1151
  5551. --------v-21E00F-----------------------------
  5552. INT 21 - VIRUS - "8-tunes" - INSTALLATION CHECK
  5553.     AX = E00Fh
  5554. Return: AX = 4C31h if resident
  5555. SeeAlso: AH=E0h"VIRUS",AH=E1h"VIRUS"
  5556. --------E-21E1-------------------------------
  5557. INT 21 - OS/286, OS/386 - ISSUE REAL PROCEDURE CALL
  5558.     AH = E1h
  5559.     ???
  5560. Return: ???
  5561. Note:    protected mode only???
  5562. SeeAlso: AH=E0h"OS/286",AH=E2h"OS/286",AH=E3h"OS/286",AX=250Eh,INT 31/AX=0301h
  5563. --------T-21E1-------------------------------
  5564. INT 21 - DoubleDOS - CLEAR KEYBOARD BUFFER FOR CURRENT JOB
  5565.     AH = E1h
  5566. SeeAlso: AH=E2h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
  5567. SeeAlso: AH=F1h"DoubleDOS"
  5568. --------v-21E1-------------------------------
  5569. INT 21 - VIRUS - "Mendoza", "Fu Manchu" - INSTALLATION CHECK
  5570.     AH = E1h
  5571. Return: AX = 0300h if "Mendoza" resident
  5572.     AX = 0400h if "Fu Manchu" resident
  5573. SeeAlso: AX=E00Fh,AH=E4h"VIRUS"
  5574. --------N-21E1--SF00-------------------------
  5575. INT 21 - Novell NetWare - MESSAGE SERVICES - SEND BROADCAST MESSAGE
  5576.     AH = E1h subfn 00h
  5577.     DS:SI -> request buffer (see #1153)
  5578.     ES:DI -> reply buffer (see #1154)
  5579. Return: AL = status
  5580.         00h successful
  5581.         FEh I/O error or out of dynamic workspace
  5582. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5583. SeeAlso: AH=DEh"NetWare",AH=DEh/DL=04h,AH=E1h/SF=01h,AH=E1h/SF=04h
  5584. SeeAlso: AH=E1h/SF=09h
  5585.  
  5586. Format of NetWare "Send Broadcast Message" request buffer:
  5587. Offset    Size    Description    (Table 1153)
  5588.  00h    WORD    length of following data (max 9Eh)
  5589.  02h    BYTE    00h (subfunction "Send Broadcast Message")
  5590.  03h    BYTE    number of connections (01h-64h)
  5591.  04h  N BYTEs    list of connections to receive broadcast message
  5592.     BYTE    length of message (01h-37h)
  5593.       N BYTEs    broadcast message (no control characters or characters > 7Eh)
  5594. SeeAlso: #1154
  5595.  
  5596. Format of NetWare "Send Broadcast Message" reply buffer:
  5597. Offset    Size    Description    (Table 1154)
  5598.  00h    WORD    (call) size of following results buffer (max 65h)
  5599.  02h    BYTE    number of connections
  5600.  03h  N BYTEs    list of per-connection results
  5601.         00h successful
  5602.         FCh message rejected due to lack of buffer space
  5603.         FDh invalid connection number
  5604.         FFh blocked (see also AH=E1h/SF=02h)
  5605. SeeAlso: #1153
  5606. --------N-21E1--SF01-------------------------
  5607. INT 21 - Novell NetWare - MESSAGE SERVICES - GET BROADCAST MESSAGE (OLD)
  5608.     AH = E1h subfn 01h
  5609.     DS:SI -> request buffer (see #1155)
  5610.     ES:DI -> reply buffer (see #1156)
  5611. Return: AL = status
  5612.         00h successful
  5613.         FCh full message queue
  5614.         FEh out of dynamic workspace
  5615. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5616. SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=09h
  5617. SeeAlso: AX=F215h/SF=01h,AX=F215h/SF=0Bh
  5618.  
  5619. Format of NetWare "Get Broadcast Message" request buffer:
  5620. Offset    Size    Description    (Table 1155)
  5621.  00h    WORD    0001h (length of following data)
  5622.  02h    BYTE    01h (subfunction "Get Broadcast Message")
  5623. SeeAlso: #1156,#1445
  5624.  
  5625. Format of NetWare "Get Broadcast Message" reply buffer:
  5626. Offset    Size    Description    (Table 1156)
  5627.  00h    WORD    (call) size of following results buffer (max 38h)
  5628.  02h    BYTE    length of message (00h-37h)
  5629.         00h if no broadcast messages pending
  5630.  03h  N BYTEs    message (no control characters or characters > 7Eh)
  5631. SeeAlso: #1155,#1443,#1446
  5632. --------N-21E1--SF02-------------------------
  5633. INT 21 - Novell NetWare - MESSAGE SERVICES - DISABLE BROADCAST MESSAGES
  5634.     AH = E1h subfn 02h
  5635.     DS:SI -> request buffer (see #1158)
  5636.     ES:DI -> reply buffer (see #1159)
  5637. Return: AL = error code
  5638. Note:    these functions are supported by NetWare 4.0+ but are not listed in
  5639.       _NetWare_System_Calls--DOS_; they may be obsolete
  5640. SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=03h,AH=E1h/SF=04h,AH=E1h/SF=09h
  5641. SeeAlso: AX=F215h/SF=02h
  5642.  
  5643. Format of NetWare "Disable Broadcasts" request packet:
  5644. Offset    Size    Description    (Table 1157)
  5645.  00h    WORD    0001h (length of following data)
  5646.  02h    BYTE    02h (subfunction "Enable Broadcast Messages")
  5647. SeeAlso: #1158,#1159
  5648. --------N-21E1--SF03-------------------------
  5649. INT 21 - Novell NetWare - MESSAGE SERVICES - ENABLE BROADCAST MESSAGES
  5650.     AH = E1h subfn 03h
  5651.     DS:SI -> request buffer (see #1158)
  5652.     ES:DI -> reply buffer (see #1159)
  5653. Return: AL = error code
  5654. Note:    these functions are supported by NetWare 4.0+ but are not listed in
  5655.       _NetWare_System_Calls--DOS_; they may be obsolete
  5656. SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=02h,AH=E1h/SF=04h,AH=E1h/SF=09h
  5657. SeeAlso: AX=F215h/SF=03h
  5658.  
  5659. Format of NetWare "Enable Broadcast Messages" request buffer:
  5660. Offset    Size    Description    (Table 1158)
  5661.  00h    WORD    0001h (length of following data)
  5662.  02h    BYTE    03h (subfunction "Enable Broadcast Messages")
  5663. SeeAlso: #1159,#1157
  5664.  
  5665. Format of NetWare "Enable/Disable Broadcast Messages" reply buffer:
  5666. Offset    Size    Description    (Table 1159)
  5667.  00h    WORD    (call) 0000h (no data returned)
  5668. SeeAlso: #1158,#1157
  5669. --------N-21E1--SF04-------------------------
  5670. INT 21 O - Novell NetWare - MESSAGE SERVICES - SEND PERSONAL MESSAGE
  5671.     AH = E1h subfn 04h
  5672.     DS:SI -> request buffer (see #1160)
  5673.     ES:DI -> reply buffer (see #1161)
  5674. Return: AL = status
  5675.         00h successful
  5676.         FEh I/O error or out of dynamic workspace
  5677. Notes:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  5678.     message pipes use CPU time on the file server; IPX, SPX, or NetBIOS
  5679.       connections should be used for peer-to-peer communications as these
  5680.       protocols do not use file server time
  5681. SeeAlso: AH=E1h/SF=00h,AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
  5682.  
  5683. Format of NetWare "Send Personal Message" request buffer:
  5684. Offset    Size    Description    (Table 1160)
  5685.  00h    WORD    length of following data (max E5h)
  5686.  02h    BYTE    04h (subfunction "Send Personal Message")
  5687.  03h    BYTE    number of connections (01h-64h)
  5688.  04h  N BYTEs    list of connections to receive broadcast message
  5689.     BYTE    length of message (01h-7Eh)
  5690.       N BYTEs    message (no control characters or characters > 7Eh)
  5691. SeeAlso: #1161
  5692.  
  5693. Format of NetWare "Send Personal Message" reply buffer:
  5694. Offset    Size    Description    (Table 1161)
  5695.  00h    WORD    (call) size of following results buffer (max 65h)
  5696.  02h    BYTE    number of connections
  5697.  03h  N BYTEs    list of per-connection results
  5698.         00h successful
  5699.         FCh message rejected because queue is full (contains 6 msgs)
  5700.         FDh incomplete pipe
  5701.         FFh failed
  5702. SeeAlso: #1160
  5703. --------N-21E1--SF05-------------------------
  5704. INT 21 O - Novell NetWare - MESSAGE SERVICES - GET PERSONAL MESSAGE
  5705.     AH = E1h subfn 05h
  5706.     DS:SI -> request buffer (see #1162)
  5707.     ES:DI -> reply buffer (see #1163)
  5708. Return: AL = status
  5709.         00h successful
  5710.         FEh out of dynamic workspace
  5711. Desc:    return the oldest message in the default file server's message queue
  5712.       for the calling workstation
  5713. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  5714. SeeAlso: AH=E1h/SF=01h,AH=E1h/SF=04h,AH=E1h/SF=06h,AH=E1h/SF=08h
  5715.  
  5716. Format of NetWare "Get Personal Message" request buffer:
  5717. Offset    Size    Description    (Table 1162)
  5718.  00h    WORD    0001h (length of following data)
  5719.  02h    BYTE    05h (subfunction "Get Personal Message")
  5720. SeeAlso: #1163
  5721.  
  5722. Format of NetWare "Get Personal Message" reply buffer:
  5723. Offset    Size    Description    (Table 1163)
  5724.  00h    WORD    (call) size of following results buffer (max 80h)
  5725.  02h    BYTE    connection number of sending station
  5726.  03h    BYTE    length of message (00h-7Eh)
  5727.         00h if no personal messages pending
  5728.  04h  N BYTEs    message (no control characters or characters > 7Eh)
  5729. SeeAlso: #1162
  5730. --------N-21E1--SF06-------------------------
  5731. INT 21 O - Novell NetWare - MESSAGE SERVICES - OPEN MESSAGE PIPE
  5732.     AH = E1h subfn 06h
  5733.     DS:SI -> request buffer (see #1164)
  5734.     ES:DI -> reply buffer (see #1165)
  5735. Return: AL = status
  5736.         00h successful
  5737.         FEh out of dynamic workspace
  5738. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  5739. SeeAlso: AH=E1h/SF=04h,AH=E1h/SF=07h,AH=E1h/SF=08h
  5740.  
  5741. Format of NetWare "Open Message Pipe" request buffer:
  5742. Offset    Size    Description    (Table 1164)
  5743.  00h    WORD    length of following data (max 66h)
  5744.  02h    BYTE    06h (subfunction "Open Message Pipe")
  5745.  03h    BYTE    number of pipes to open (01h-64h)
  5746.  04h  N BYTEs    list of connection numbers
  5747. SeeAlso: #1165,#1166,#1169
  5748.  
  5749. Format of NetWare "Open Message Pipe" reply buffer:
  5750. Offset    Size    Description    (Table 1165)
  5751.  00h    WORD    (call) size of following results buffer (max 65h)
  5752.  02h    BYTE    number of connections
  5753.  03h  N BYTEs    list of results
  5754.         00h successful
  5755.         FEh incomplete (target half not yet created)
  5756.         FFh failed
  5757. SeeAlso: #1164,#1167,#1170
  5758. --------N-21E1--SF07-------------------------
  5759. INT 21 O - Novell NetWare - MESSAGE SERVICES - CLOSE MESSAGE PIPE
  5760.     AH = E1h subfn 07h
  5761.     DS:SI -> request buffer (see #1166)
  5762.     ES:DI -> reply buffer (see #1167)
  5763. Return: AL = status
  5764.         00h successful
  5765.         FCh full message queue
  5766.         FEh out of dynamic workspace
  5767. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  5768. SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=08h
  5769.  
  5770. Format of NetWare "Close Mesage Pipe" request buffer:
  5771. Offset    Size    Description    (Table 1166)
  5772.  00h    WORD    length of following data (max 66h)
  5773.  02h    BYTE    07h (subfunction "Close Message Pipe")
  5774.  03h    BYTE    number of pipes to close (01h-64h)
  5775.  04h  N BYTEs    list of connection numbers
  5776. SeeAlso: #1164,#1167
  5777.  
  5778. Format of NetWare "Close Message Pipe" reply buffer:
  5779. Offset    Size    Description    (Table 1167)
  5780.  00h    WORD    (call) size of following results buffer (max 65h)
  5781.  02h    BYTE    number of connections
  5782.  03h  N BYTEs    list of results
  5783.         00h successful
  5784.         FDh failed
  5785.         FFh no such pipe
  5786. SeeAlso: #1165,#1166
  5787. --------N-21E1--SF08-------------------------
  5788. INT 21 O - Novell NetWare - MESSAGE SERVICES - CHECK PIPE STATUS
  5789.     AH = E1h subfn 08h
  5790.     DS:SI -> request buffer (see #1169)
  5791.     ES:DI -> reply buffer (see #1170)
  5792. Return: AL = status (see #1168)
  5793. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0-2.x
  5794. SeeAlso: AH=E1h/SF=05h,AH=E1h/SF=06h,AH=E1h/SF=07h,AX=F215h/SF=08h
  5795.  
  5796. (Table 1168)
  5797. Values for NetWare function status:
  5798.  00h    successful
  5799.  FCh    full message queue
  5800.  FEh    out of dynamic workspace
  5801. SeeAlso: #1173
  5802.  
  5803. Format of NetWare "Check Pipe Status" request buffer:
  5804. Offset    Size    Description    (Table 1169)
  5805.  00h    WORD    length of following data (max 66h)
  5806.  02h    BYTE    08h (subfunction "Check Pipe Status")
  5807.  03h    BYTE    number of pipes to monitor (01h-64h)
  5808.  04h  N BYTEs    list of connection numbers
  5809. SeeAlso: #1164,#1170
  5810.  
  5811. Format of NetWare "Check Pipe Status" reply buffer:
  5812. Offset    Size    Description    (Table 1170)
  5813.  00h    WORD    (call) size of following results buffer (max 65h)
  5814.  02h    BYTE    number of connections
  5815.  03h  N BYTEs    list of pipe statuses
  5816.         00h open
  5817.         FEh incomplete
  5818.         FFh closed
  5819. SeeAlso: #1165,#1169,#1444
  5820. --------N-21E1--SF09-------------------------
  5821. INT 21 - Novell NetWare - MESSAGE SERVICES - BROADCAST TO CONSOLE
  5822.     AH = E1h subfn 09h
  5823.     DS:SI -> request buffer (see #1171)
  5824.     ES:DI -> reply buffer (see #1172)
  5825. Return: AL = status (see #1168)
  5826. Desc:    send a one-line message to the system console on the default file
  5827.       server
  5828. Note:    this function is supported by NetWare 4.0+ and Advanced NetWare 1.0+
  5829. SeeAlso: AH=DEh/DL=04h,AH=E1h/SF=00h,AH=E1h/SF=01h,AH=E3h/SF=D1h
  5830. SeeAlso: AX=F215h/SF=09h
  5831.  
  5832. Format of NetWare "Broadcast to Console" request buffer:
  5833. Offset    Size    Description    (Table 1171)
  5834.  00h    WORD    length of following data (max 3Eh)
  5835.  02h    BYTE    09h (subfunction "Broadcast to Console")
  5836.  03h    BYTE    length of message (01h-3Ch)
  5837.  04h  N BYTEs    message (no control characters or characters > 7Eh)
  5838. SeeAlso: #1172
  5839.  
  5840. Format of NetWare reply buffer:
  5841. Offset    Size    Description    (Table 1172)
  5842.  00h    WORD    (call) 0000h (no results returned)
  5843. SeeAlso: #1171
  5844. --------E-21E2-------------------------------
  5845. INT 21 - OS/286, OS/386 - SET REAL PROCEDURE SIGNAL HANDLER
  5846.     AH = E2h
  5847.     ???
  5848. Return: ???
  5849. SeeAlso: AH=E0h"OS/286",AH=E1h"OS/286",AH=E6h"OS/286"
  5850. --------N-21E2-------------------------------
  5851. INT 21 - DoubleDOS - SEND CHARACTER TO KEYBOARD BUFFER OF OTHER JOB
  5852.     AH = E2h
  5853.     AL = character
  5854. Return: AL = 00h successful
  5855.          01h buffer full (128 characters)
  5856. SeeAlso: AH=E1h"DoubleDOS",AH=E3h"DoubleDOS",AH=E8h"DoubleDOS"
  5857. SeeAlso: AH=F2h"DoubleDOS"
  5858. --------N-21E2--SF00-------------------------
  5859. INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY HANDLE
  5860.     AH = E2h subfn 00h
  5861.     DS:SI -> request buffer (see #1174)
  5862.     ES:DI -> reply buffer (see #1175)
  5863. Return: AL = status (00h,98h,9Bh,9Ch) (see #1173)
  5864. Desc:    set the target handle to reference the directory specified by the
  5865.       source handle and the source path; both handles must refer to the
  5866.       same file server
  5867. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5868.       Alloy NTNX
  5869.     the target handle is not changed if this function fails
  5870. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=00h
  5871.  
  5872. (Table 1173)
  5873. Values for NetWare function status:
  5874.  00h    successful
  5875.  84h    not permitted to create
  5876.  8Ah    not permitted to delete
  5877.  8Bh    not permitted to rename
  5878.  8Ch    not permitted to modify
  5879.  98h    nonexistent volume
  5880.  9Bh    invalid directory handle
  5881.  9Ch    invalid path
  5882.  9Eh    invalid filename
  5883.  9Fh    directory currently in use
  5884.  A0h    directory not empty
  5885.  C6h    no console rights
  5886.  FCh    no such bindery object
  5887. SeeAlso: #1168,#1200
  5888.  
  5889. Format of NetWare "Set Directory Handle" request buffer:
  5890. Offset    Size    Description    (Table 1174)
  5891.  00h    WORD    length of following data (max 103h)
  5892.  02h    BYTE    00h (subfunction "Set Directory Handle")
  5893.  03h    BYTE    directory handle of target
  5894.  04h    BYTE    directory handle of source
  5895.  05h    BYTE    length of source directory path (01h-FFh)
  5896.  06h  N BYTEs    source directory path
  5897. SeeAlso: #1175
  5898.  
  5899. Format of NetWare reply buffer:
  5900. Offset    Size    Description    (Table 1175)
  5901.  00h    WORD    (call) 0000h (no results returned)
  5902. SeeAlso: #1174
  5903. --------N-21E2--SF01-------------------------
  5904. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET DIRECTORY PATH
  5905.     AH = E2h subfn 01h
  5906.     DS:SI -> request buffer (see #1176)
  5907.     ES:DI -> reply buffer (see #1177)
  5908. Return: AL = status (00h,9Bh) (see #1173)
  5909. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5910.       Alloy NTNX
  5911. SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=03h,AH=E2h/SF=1Ah,AH=E9h,AX=F216h/SF=01h
  5912.  
  5913. Format of NetWare "Get Directory Path" request buffer:
  5914. Offset    Size    Description    (Table 1176)
  5915.  00h    WORD    0002h (length of following data)
  5916.  02h    BYTE    01h (subfunction "Get Directory Path")
  5917.  03h    BYTE    directory handle
  5918. SeeAlso: #1177,#1178
  5919.  
  5920. Format of NetWare "Get Directory Path" reply buffer:
  5921. Offset    Size    Description    (Table 1177)
  5922.  00h    WORD    (call) length of following data buffer
  5923.  02h    BYTE    length of directory path (01h-FFh)
  5924.  03h  N BYTEs    full directory path including volume
  5925. SeeAlso: #1176,#1179
  5926. --------N-21E2--SF02-------------------------
  5927. INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY INFORMATION
  5928.     AH = E2h subfn 02h
  5929.     DS:SI -> request buffer (see #1178)
  5930.     ES:DI -> reply buffer (see #1179)
  5931. Return: AL = status (00h,98h,9Bh,9Ch) (see #1173)
  5932. Desc:    get information about the first or next subdirectory of the specified
  5933.       directory
  5934. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5935.       Alloy NTNX
  5936. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=03h,AH=E2h/SF=19h,AX=F216h/SF=02h
  5937.  
  5938. Format of NetWare "Scan Directory Information" request buffer:
  5939. Offset    Size    Description    (Table 1178)
  5940.  00h    WORD    length of following data (max 104h)
  5941.  02h    BYTE    02h (subfunction "Scan Directory Information")
  5942.  03h    BYTE    directory handle
  5943.  04h    WORD    (big-endian) subdirectory number
  5944.         0000h for first call, returned subdir number + 1 on next call
  5945.  06h    BYTE    length of directory path
  5946.  07h  N BYTEs    directory path
  5947. SeeAlso: #1176,#1179
  5948.  
  5949. Format of NetWare "Scan Directory Information" reply buffer:
  5950. Offset    Size    Description    (Table 1179)
  5951.  00h    WORD    (call) 001Ch (length of following data buffer)
  5952.  02h 16 BYTEs    subdirectory name
  5953.  12h    DWORD    (big-endian) date and time of creation (see #1180)
  5954.  16h    DWORD    (big-endian) object ID of owner
  5955.  1Ah    BYTE    maximum directory rights (see #1183)
  5956.  1Bh    BYTE    unused
  5957.  1Ch    WORD    (big-endian) subdirectory number
  5958. SeeAlso: #1177,#1178,#1447 at AX=F216h/SF=02h
  5959.  
  5960. Bitfields for NetWare date and time:
  5961. Bit(s)    Description    (Table 1180)
  5962.  31-25    year-1980
  5963.  24-21    month
  5964.  20-16    day
  5965.  15-11    hour
  5966.  10-5    minute
  5967.  4-0    second
  5968. --------N-21E2--SF03-------------------------
  5969. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET EFFECTIVE DIRECTORY RIGHTS
  5970.     AH = E2h subfn 03h
  5971.     DS:SI -> request buffer (see #1181)
  5972.     ES:DI -> reply buffer (see #1182)
  5973. Return: AL = status (00h,98h,9Bh) (see #1173)
  5974. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  5975.       Alloy NTNX
  5976. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=02h,AX=F216h/SF=03h
  5977.  
  5978. Format of NetWare "Get Effective Directory Rights (old)" request buffer:
  5979. Offset    Size    Description    (Table 1181)
  5980.  00h    WORD    length of following data (max 102h)
  5981.  02h    BYTE    03h (subfunction "Get Effective Directory Rights (old)")
  5982.  03h    BYTE    directory handle
  5983.  04h    BYTE    length of directory path (00h-FFh)
  5984.  05h  N BYTEs    directory path
  5985. SeeAlso: #1182,#1184
  5986.  
  5987. Format of NetWare "Get Effective Directory Rights" reply buffer:
  5988. Offset    Size    Description    (Table 1182)
  5989.  00h    WORD    (call) 0001h (length of following data buffer)
  5990.  02h    BYTE    effective directory rights (see #1183)
  5991. SeeAlso: #1181
  5992.  
  5993. Bitfields for NetWare directory rights:
  5994. Bit(s)    Description    (Table 1183)
  5995.  0    reading allowed
  5996.  1    writing allowed
  5997.  2    opens allowed
  5998.  3    file creation allowed
  5999.  4    deletion allowed
  6000.  5    "parental" may create/delete subdirectories and grant/revoke trustee
  6001.       rights
  6002.  6    directory search allowed
  6003.  7    file attributes may be changed
  6004. SeeAlso: #1182,#1184
  6005. --------N-21E2--SF04-------------------------
  6006. INT 21 - Novell NetWare - DIRECTORY SERVICES - MODIFY MAXIMUM RIGHTS MASK
  6007.     AH = E2h subfn 04h
  6008.     DS:SI -> request buffer (see #1184)
  6009.     ES:DI -> reply buffer (see #1185)
  6010. Return: AL = status (00h,8Ch,98h,9Ch) (see #1173)
  6011. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6012.       Alloy NTNX
  6013. SeeAlso: AH=E2h/SF=03h,AH=E2h/SF=0Ah,AH=E2h/SF=0Dh,AX=F216h/SF=04h
  6014.  
  6015. Format of NetWare "Modify Maximum Rights Mask" request buffer:
  6016. Offset    Size    Description    (Table 1184)
  6017.  00h    WORD    length of following data (max 104h)
  6018.  02h    BYTE    04h (subfunction "Modify Maximum Rights Mask")
  6019.  03h    BYTE    directory handle
  6020.  04h    BYTE    rights to grant (see #1183)
  6021.  05h    BYTE    rights to revoke (see #1183)
  6022.  06h    BYTE    length of directory path (00h-FFh)
  6023.  07h  N BYTEs    directory path
  6024. Note:    the rights specified at offset 05h are revoked first, and then the
  6025.       rights specified at offset 04h are added to the resulting rights
  6026.       mask
  6027. SeeAlso: #1181,#1185
  6028.  
  6029. Format of NetWare reply buffer:
  6030. Offset    Size    Description    (Table 1185)
  6031.  00h    WORD    (call) 0000h (no results returned)
  6032. SeeAlso: #1184
  6033. --------N-21E2--SF05-------------------------
  6034. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NUMBER
  6035.     AH = E2h subfn 05h
  6036.     DS:SI -> request buffer (see #1186)
  6037.     ES:DI -> reply buffer (see #1187)
  6038. Return: AL = status (00h,98h) (see #1173)
  6039. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6040.       Alloy NTNX
  6041. SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E3h/SF=E9h
  6042. SeeAlso: AX=F216h/SF=05h
  6043.  
  6044. Format of NetWare "Get Volume Number" request buffer:
  6045. Offset    Size    Description    (Table 1186)
  6046.  00h    WORD    length of following data (max 12h)
  6047.  02h    BYTE    05h (subfunction "Get Volume Number")
  6048.  03h    BYTE    length of volume name (01h-10h)
  6049.  04h  N BYTEs    volume name
  6050. SeeAlso: #1187,#1449 at AX=F216h/SF=05h
  6051.  
  6052. Format of NetWare "Get Volume Number" reply buffer:
  6053. Offset    Size    Description    (Table 1187)
  6054.  00h    WORD    (call) 0001h (length of following results buffer)
  6055.  02h    BYTE    volume number
  6056. SeeAlso: #1186,#1449 at AX=F216h/SF=05h
  6057. --------N-21E2--SF06-------------------------
  6058. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME NAME
  6059.     AH = E2h subfn 06h
  6060.     DS:SI -> request buffer (see #1188)
  6061.     ES:DI -> reply buffer (see #1189)
  6062. Return: AL = status (00h,98h) (see #1173)
  6063. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6064.       Alloy NTNX
  6065. SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=05h,AH=E2h/SF=15h,AH=E2h/SF=1Ah
  6066. SeeAlso: AH=E3h/SF=E9h,AX=F216h/SF=06h
  6067.  
  6068. Format of NetWare "Get Volume Name" request buffer:
  6069. Offset    Size    Description    (Table 1188)
  6070.  00h    WORD    0002h (length of following data)
  6071.  02h    BYTE    06h (subfunction "Get Volume Name")
  6072.  03h    BYTE    volume number
  6073. SeeAlso: #1189,#1450 at AX=F216h/SF=06h
  6074.  
  6075. Format of NetWare "Get Volume Name" reply buffer:
  6076. Offset    Size    Description    (Table 1189)
  6077.  00h    WORD    (call) 0011h (length of following results buffer)
  6078.  02h    BYTE    length of volume name
  6079.  03h 16 BYTEs    NUL-padded volume name
  6080. SeeAlso: #1188,#1450 at AX=F216h/SF=06h
  6081. --------N-21E2--SF0A-------------------------
  6082. INT 21 - Novell NetWare - DIRECTORY SERVICES - CREATE DIRECTORY
  6083.     AH = E2h subfn 0Ah
  6084.     DS:SI -> request buffer (see #1190)
  6085.     ES:DI -> reply buffer (see #1191)
  6086. Return: AL = status (00h,84h,98h,FCh) (see #1173)
  6087. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6088.       Alloy NTNX
  6089. SeeAlso: AH=39h,AH=E2h/SF=0Bh,AH=E2h/SF=0Fh,AX=F216h/SF=0Ah
  6090.  
  6091. Format of NetWare "Create Directory" request buffer:
  6092. Offset    Size    Description    (Table 1190)
  6093.  00h    WORD    length of following data (max 103h)
  6094.  02h    BYTE    0Ah (subfunction "Create Directory")
  6095.  03h    BYTE    directory handle
  6096.  04h    BYTE    maximum directory rights (see #1183)
  6097.  05h    BYTE    length of directory path (00h-FFh)
  6098.  06h  N BYTEs    directory path
  6099. SeeAlso: #1191,#1192
  6100.  
  6101. Format of NetWare reply buffer:
  6102. Offset    Size    Description    (Table 1191)
  6103.  00h    WORD    (call) 0000h (no data returned)
  6104. SeeAlso: #1190,#1192
  6105. --------N-21E2--SF0B-------------------------
  6106. INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE DIRECTORY
  6107.     AH = E2h subfn 0Bh
  6108.     DS:SI -> request buffer (see #1192)
  6109.     ES:DI -> reply buffer (see #1191)
  6110. Return: AL = status (00h,8Ah,98h,9Bh,9Ch,9Fh,A0h) (see #1173)
  6111. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6112.       Alloy NTNX
  6113. SeeAlso: AH=3Ah,AH=E2h/SF=0Ah,AH=E2h/SF=0Fh,AX=F216h/SF=0Bh
  6114.  
  6115. Format of NetWare "Delete Directory" request buffer:
  6116. Offset    Size    Description    (Table 1192)
  6117.  00h    WORD    length of following data (max 103h)
  6118.  02h    BYTE    0Bh (subfunction "Delete Directory")
  6119.  03h    BYTE    directory handle
  6120.  04h    BYTE    unused
  6121.  05h    BYTE    length of directory path (00h-FFh)
  6122.  06h  N BYTEs    directory path
  6123. SeeAlso: #1190,#1191
  6124. --------N-21E2--SF0C-------------------------
  6125. INT 21 - Novell NetWare - DIRECTORY SERVICES - SCAN DIRECTORY FOR TRUSTEES
  6126.     AH = E2h subfn 0Ch
  6127.     DS:SI -> request buffer (see #1193)
  6128.     ES:DI -> reply buffer (see #1194)
  6129. Return: AL = status (00h,9Ch) (see also #1173)
  6130.         9Ch no more trustees
  6131. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  6132. SeeAlso: AH=E2h/SF=0Dh,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Ch
  6133.  
  6134. Format of NetWare "Scan Directory For Trustees" request buffer:
  6135. Offset    Size    Description    (Table 1193)
  6136.  00h    WORD    length of following data (max 103h)
  6137.  02h    BYTE    0Ch (subfunction "Scan Directory For Trustees")
  6138.  03h    BYTE    directory handle
  6139.  04h    BYTE    sequence number
  6140.         00h on first call, increment for each subsequent call
  6141.  05h    BYTE    length of directory path (00h-FFh)
  6142.  06h  N BYTEs    directory path
  6143. SeeAlso: #1194,#1195,#1451 at AX=F216h/SF=0Ch
  6144.  
  6145. Format of NetWare "Scan Directory For Trustees" reply buffer:
  6146. Offset    Size    Description    (Table 1194)
  6147.  00h    WORD    (call) 0031h (length of following results buffer)
  6148.  02h 16 BYTEs    directory name
  6149.  12h  4 BYTEs    date and time of creation
  6150.  16h    DWORD    (big-endian) object ID of owner
  6151.  1Ah  5 DWORDs    (big-endian) object IDs of Trustees 0 through 4
  6152.         00000000h = end of group
  6153.  2Eh  5 BYTEs    directory rights for Trustees 0 through 4 (see #1183)
  6154. SeeAlso: #1193,#1197,#1451 at AX=F216h/SF=0Ch
  6155. --------N-21E2--SF0D-------------------------
  6156. INT 21 - Novell NetWare - DIRECTORY SERVICES - ADD TRUSTEE TO DIRECTORY
  6157.     AH = E2h subfn 0Dh
  6158.     DS:SI -> request buffer (see #1195)
  6159.     ES:DI -> reply buffer (see #1197)
  6160. Return: AL = status (00h,8Ch,FCh) (see #1173)
  6161. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6162.       Alloy NTNX
  6163. SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Eh,AH=E3h/SF=47h,AX=F216h/SF=0Dh
  6164.  
  6165. Format of NetWare "Add Trustee To Directory" request buffer:
  6166. Offset    Size    Description    (Table 1195)
  6167.  00h    WORD    length of following data (max 107h)
  6168.  02h    BYTE    0Dh (subfunction "Add Trustee To Directory")
  6169.  03h    BYTE    directory handle
  6170.  04h    DWORD    (big-endian) object ID of trustee
  6171.  08h    BYTE    trustee directory rights (see #1183)
  6172.  09h    BYTE    length of directory path (00h-FFh)
  6173.  0Ah  N BYTEs    directory path
  6174. SeeAlso: #1197
  6175. --------N-21E2--SF0E-------------------------
  6176. INT 21 - Novell NetWare - DIRECTORY SERVICES - DELETE TRUSTEE FROM DIRECTORY
  6177.     AH = E2h subfn 0Eh
  6178.     DS:SI -> request buffer (see #1196)
  6179.     ES:DI -> reply buffer (see #1197)
  6180. Return: AL = status (00h,98h,9Bh,9Ch) (see #1173)
  6181. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6182.       Alloy NTNX
  6183. SeeAlso: AH=E2h/SF=0Ch,AH=E2h/SF=0Dh,AX=F216h/SF=0Eh
  6184.  
  6185. Format of NetWare "Delete Trustee From Directory" request buffer:
  6186. Offset    Size    Description    (Table 1196)
  6187.  00h    WORD    length of following data (max 107h)
  6188.  02h    BYTE    0Eh (subfunction "Delete Trustee From Directory")
  6189.  03h    BYTE    directory handle
  6190.  04h    DWORD    (big-endian) object ID of trustee
  6191.  08h    BYTE    unused
  6192.  09h    BYTE    length of directory path (00h-FFh)
  6193.  0Ah  N BYTEs    directory path
  6194. SeeAlso: #1197
  6195.  
  6196. Format of NetWare reply buffer:
  6197. Offset    Size    Description    (Table 1197)
  6198.  00h    WORD    (call) 0000h (no data returned)
  6199. SeeAlso: #1196,#1198,#1199
  6200. --------N-21E2--SF0F-------------------------
  6201. INT 21 - Novell NetWare - DIRECTORY SERVICES - RENAME DIRECTORY
  6202.     AH = E2h subfn 0Fh
  6203.     DS:SI -> request buffer (see #1198)
  6204.     ES:DI -> reply buffer (see #1197)
  6205. Return: AL = status (00h,8Bh,9Bh,9Ch,9Eh) (see #1173)
  6206. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6207.       Alloy NTNX
  6208.     directories SYS:LOGIN, SYS:MAIL, and SYS:PUBLIC must not be renamed
  6209. SeeAlso: AH=56h,AH=E2h/SF=0Ah,AH=E2h/SF=0Bh,AX=F216h/SF=0Fh
  6210.  
  6211. Format of NetWare "Rename Directory" request buffer:
  6212. Offset    Size    Description    (Table 1198)
  6213.  00h    WORD    length of following data (max 111h)
  6214.  02h    BYTE    0Fh (subfunction "Rename Directory")
  6215.  03h    BYTE    directory handle
  6216.  04h    BYTE    length of directory path (00h-FFh)
  6217.  05h  N BYTEs    directory path
  6218.     BYTE    length of new directory name (01h-0Eh)
  6219.       N BYTEs    new directory name
  6220. SeeAlso: #1197
  6221. --------N-21E2--SF10-------------------------
  6222. INT 21 - Novell NetWare - FILE SERVICES - PURGE ERASED FILES (OLD)
  6223.     AH = E2h subfn 10h
  6224.     DS:SI -> request buffer (see #1199)
  6225.     ES:DI -> reply buffer (see #1197)
  6226. Return: AL = status (00h,C6h) (see #1200)
  6227. Desc:    purges files marked for deletion on the file server by the calling
  6228.       workstation
  6229. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6230.       Alloy NTNX
  6231. SeeAlso: AH=13h,AH=41h,AH=E2h/SF=11h,AH=E3h/SF=CEh,AX=F244h,AX=F216h/SF=10h
  6232.  
  6233. Format of NetWare "Purge Erased Files" request buffer:
  6234. Offset    Size    Description    (Table 1199)
  6235.  00h    WORD    0001h (length of following data)
  6236.  02h    BYTE    10h (subfunction "Purge Erased Files")
  6237. SeeAlso: #1197
  6238. --------N-21E2--SF11-------------------------
  6239. INT 21 - Novell NetWare - FILE SERVICES - RESTORE ERASED FILE (OLD)
  6240.     AH = E2h subfn 11h
  6241.     DS:SI -> request buffer (see #1201)
  6242.     ES:DI -> reply buffer (see #1202)
  6243. Return: AL = status (00h,98h,FFh) (see #1200)
  6244. Desc:    restores one file marked for deletion which has not yet been purged
  6245. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6246.       Alloy NTNX
  6247. SeeAlso: AH=13h,AH=41h,AH=E2h/SF=10h,AH=E3h/SF=CEh,AX=F244h
  6248.  
  6249. (Table 1200)
  6250. Values for NetWare function status:
  6251.  00h    successful
  6252.  98h    nonexistent volume
  6253.  9Ch    invalid path
  6254.  C6h    no console rights
  6255.  FFh    no more erased files
  6256. SeeAlso: #1173,#1233
  6257.  
  6258. Format of NetWare "Restore Erased File" request buffer:
  6259. Offset    Size    Description    (Table 1201)
  6260.  00h    WORD    length of following data (max 13h)
  6261.  02h    BYTE    11h (subfunction "Restore Erased File")
  6262.  03h    BYTE    directory handle or 00h
  6263.  04h    BYTE    length of volume name
  6264.  05h  N BYTEs    volume name (including colon)
  6265. Note:    if both a directory handle and a volume name are specified, the volume
  6266.       name overrides the handle
  6267. SeeAlso: #1202,#1452
  6268.  
  6269. Format of NetWare "Restore Erased File" reply buffer:
  6270. Offset    Size    Description    (Table 1202)
  6271.  00h    WORD    (call) 001Eh (size of following results buffer)
  6272.  02h 15 BYTEs    ASCIZ name of erased file
  6273.  11h 15 BYTEs    ASCIZ name under which file was restored
  6274. SeeAlso: #1201,#1452
  6275. --------N-21E2--SF12-------------------------
  6276. INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC PERMANENT DIRECTORY HANDLE
  6277.     AH = E2h subfn 12h
  6278.     DS:SI -> request buffer (see #1203)
  6279.     ES:DI -> reply buffer (see #1204)
  6280. Return: AL = status (00h,98h,9Ch) (see #1200)
  6281. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6282.       Alloy NTNX
  6283. SeeAlso: AH=E2h/SF=00h,AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=12h
  6284.  
  6285. Format of NetWare "Allocate Permanent Directory Handle" request buffer:
  6286. Offset    Size    Description    (Table 1203)
  6287.  00h    WORD    length of following data (max 103h)
  6288.  02h    BYTE    12h (subfunction "Allocate Permanent Directory Handle")
  6289.  03h    BYTE    directory handle
  6290.  04h    BYTE    drive ('A'-'Z')
  6291.  05h    BYTE    length of directory path
  6292.  06h  N BYTEs    directory path
  6293. SeeAlso: #1204,#1205,#1454
  6294.  
  6295. Format of NetWare reply buffer:
  6296. Offset    Size    Description    (Table 1204)
  6297.  00h    WORD    (call) 0002h (size of following results buffer)
  6298.  02h    BYTE    new directory handle
  6299.  03h    BYTE    effective directory rights (see #1183)
  6300. SeeAlso: #1203,#1454
  6301. --------N-21E2--SF13-------------------------
  6302. INT 21 - Novell NetWare - DIRECTORY SERVICES - ALLOC TEMPORARY DIRECTORY HANDLE
  6303.     AH = E2h subfn 13h
  6304.     DS:SI -> request buffer (see #1205)
  6305.     ES:DI -> reply buffer (see #1204)
  6306. Return: AL = status (00h,98h,9Ch) (see #1200)
  6307. Notes:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6308.       Alloy NTNX
  6309.     this call is the same as AH=E2h/SF=12h except that the directory handle
  6310.       will be automatically deallocated when the calling application
  6311.       executes an End of Job call (AH=D6h) or terminates
  6312. SeeAlso: AH=D6h,AH=E2h/SF=00h,AH=E2h/SF=12h,AH=E2h/SF=14h,AH=E2h/SF=16h
  6313. SeeAlso: AX=F216h/SF=13h
  6314.  
  6315. Format of NetWare "Allocate Temporary Directory Handle" request buffer:
  6316. Offset    Size    Description    (Table 1205)
  6317.  00h    WORD    length of following data (max 103h)
  6318.  02h    BYTE    13h (subfunction "Allocate Temporary Directory Handle")
  6319.  03h    BYTE    directory handle
  6320.  04h    BYTE    drive ('A'-'Z')
  6321.  05h    BYTE    length of directory path
  6322.  06h  N BYTEs    directory path
  6323. SeeAlso: #1203,#1206
  6324. --------N-21E2--SF14-------------------------
  6325. INT 21 - Novell NetWare - DIRECTORY SERVICES - DEALLOCATE DIRECTORY HANDLE
  6326.     AH = E2h subfn 14h
  6327.     DS:SI -> request buffer (see #1206)
  6328.     ES:DI -> reply buffer (see #1207)
  6329. Return: AL = status (00h,9Bh) (see #1173)
  6330. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6331.       Alloy NTNX
  6332. SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=13h,AX=F216h/SF=14h
  6333.  
  6334. Format of NetWare "Deallocate Directory Handle" request buffer:
  6335. Offset    Size    Description    (Table 1206)
  6336.  00h    WORD    0002h (length of following data)
  6337.  02h    BYTE    14h (subfunction "Deallocate Directory Handle")
  6338.  03h    BYTE    directory handle
  6339. SeeAlso: #1207
  6340.  
  6341. Format of NetWare reply buffer:
  6342. Offset    Size    Description    (Table 1207)
  6343.  00h    WORD    (call) 0000h (no returned data)
  6344. SeeAlso: #1206
  6345. --------N-21E2--SF15-------------------------
  6346. INT 21 - Novell NetWare - DIRECTORY SERVICES - GET VOLUME INFO WITH HANDLE
  6347.     AH = E2h subfn 15h
  6348.     DS:SI -> request buffer (see #1208)
  6349.     ES:DI -> reply buffer (see #1209)
  6350. Return: AL = status
  6351.         00h successful
  6352. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6353.       Alloy NTNX
  6354. SeeAlso: AH=DAh,AH=E2h/SF=02h,AH=E2h/SF=06h,AH=E2h/SF=19h,AH=E3h/SF=E9h
  6355. SeeAlso: AX=F216h/SF=15h
  6356.  
  6357. Format of NetWare "Get Volume Info with Handle" request buffer:
  6358. Offset    Size    Description    (Table 1208)
  6359.  00h    WORD    0002h (length of following data)
  6360.  02h    BYTE    15h (subfunction "Get Volume Info With Handle")
  6361.  03h    BYTE    directory handle
  6362. SeeAlso: #1209,#1455
  6363.  
  6364. Format of NetWare "Get Volume Info with Handle" reply buffer:
  6365. Offset    Size    Description    (Table 1209)
  6366.  00h    WORD    (call) 001Ch (length of following results buffer)
  6367.  02h    WORD    (big-endian) sectors per block
  6368.  04h    WORD    (big-endian) total blocks on volume
  6369.  06h    WORD    (big-endian) blocks available on volume
  6370.  08h    WORD    (big-endian) total directory slots
  6371.  0Ah    WORD    (big-endian) directory slots available
  6372.  0Ch 16 BYTEs    NUL-padded volume name
  6373.  1Ch    WORD    (big-endian) flag: volume removable if nonzero
  6374. SeeAlso: #1208,#1455
  6375. --------N-21E2--SF16-------------------------
  6376. INT 21 u - Novell NetWare - DIRECTORY SERVICES - ALLOC SPECIAL TEMP DIR HANDLE
  6377.     AH = E2h subfn 16h
  6378.     DS:SI -> request buffer (see #1210)
  6379.     ES:DI -> reply buffer (see #1207)
  6380. Return: AL = status
  6381. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX,
  6382.       but is not described in _NetWare_System_Calls--DOS_
  6383. SeeAlso: AH=E2h/SF=13h,AH=E2h/SF=14h,AX=F216h/SF=16h
  6384.  
  6385. Format of NetWare "Alloc Special Temporary Directory Handle" request buffer:
  6386. Offset    Size    Description    (Table 1210)
  6387.  00h    WORD    length of following data
  6388.  02h    BYTE    16h (subfunction "Allocate Special Temporary Directory Handle")
  6389.  03h    BYTE    source directory handle
  6390.  04h    BYTE    drive name ('A'-'Z')
  6391.  05h    BYTE    path length
  6392.  06h  N BYTEs    directory path
  6393. SeeAlso: #1207
  6394. --------N-21E2--SF17-------------------------
  6395. INT 21 - Novell NetWare - DIRECTORY SERVICES - SAVE DIRECTORY HANDLE
  6396.     AH = E2h subfn 17h
  6397.     DS:SI -> request buffer (see #1211)
  6398.     ES:DI -> reply buffer (see #1212)
  6399. Return: AL = status
  6400.         00h successful
  6401.         else network error code
  6402. Note:    this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
  6403. SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=17h
  6404.  
  6405. Format of NetWare "Save Directory Handle" request buffer:
  6406. Offset    Size    Description    (Table 1211)
  6407.  00h    WORD    0002h (length of following data)
  6408.  02h    BYTE    17h (subfunction "Save Directory Handle")
  6409.  03h    BYTE    directory handle
  6410. SeeAlso: #1212,#1213
  6411.  
  6412. Format of NetWare "Save Directory Handle" reply buffer:
  6413. Offset    Size    Description    (Table 1212)
  6414.  00h    WORD    (call) 0010h (length of following results buffer)
  6415.  02h 16 BYTEs    save buffer
  6416. SeeAlso: #1211,#1214
  6417. --------N-21E2--SF18-------------------------
  6418. INT 21 - Novell NetWare - DIRECTORY SERVICES - RESTORE DIRECTORY HANDLE
  6419.     AH = E2h subfn 18h
  6420.     DS:SI -> request buffer (see #1213)
  6421.     ES:DI -> reply buffer (see #1214)
  6422. Return: AL = status
  6423.         00h successful
  6424.         else network error code
  6425. Desc:    restore a previously saved directory handle to reproduce an executing
  6426.       environment, possibly on a different execution site
  6427. Note:    this function is supported by Advanced NetWare 2.0+ and Alloy NTNX
  6428. SeeAlso: AH=E2h/SF=12h,AH=E2h/SF=17h,AX=F216h/SF=18h
  6429.  
  6430. Format of NetWare "Restore Directory Handle" request buffer:
  6431. Offset    Size    Description    (Table 1213)
  6432.  00h    WORD    0011h (length of following data)
  6433.  02h    BYTE    18h (subfunction "Restore Directory Handle")
  6434.  03h 16 BYTEs    save buffer
  6435. SeeAlso: #1211,#1214
  6436.  
  6437. Format of NetWare "Restore Directory Handle" reply buffer:
  6438. Offset    Size    Description    (Table 1214)
  6439.  00h    WORD    (call) 0002h (length of following results buffer)
  6440.  02h    BYTE    new directory handle
  6441.  03h    BYTE    effective rights (see #1183)
  6442. SeeAlso: #1213
  6443. --------N-21E2--SF19-------------------------
  6444. INT 21 - Novell NetWare - DIRECTORY SERVICES - SET DIRECTORY INFORMATION
  6445.     AH = E2h subfn 19h
  6446.     DS:SI -> request buffer (see #1215)
  6447.     ES:DI -> reply buffer (see #1216)
  6448. Return: AL = status (00h,9Bh,9Ch) (see #1173)
  6449. Note:    this function is supported by Advanced NetWare 1.0+ and Alloy NTNX
  6450. SeeAlso: AH=E2h/SF=02h,AH=E2h/SF=0Fh,AX=F216h/SF=19h
  6451.  
  6452. Format of NetWare "Set Directory Information" request buffer:
  6453. Offset    Size    Description    (Table 1215)
  6454.  00h    WORD    length of following data (max 10Bh)
  6455.  02h    BYTE    19h (subfunction "Set Directory Information")
  6456.  03h    BYTE    directory handle
  6457.  04h    DWORD    (big-endian) date and time of creation
  6458.  08h    DWORD    (big-endian) object ID of owner
  6459.  0Ch    BYTE    maximum directory rights (see #1183)
  6460.  0Dh    BYTE    length of directory path
  6461.  0Eh  N BYTEs    directory path
  6462. SeeAlso: #1216
  6463.  
  6464. Format of NetWare reply buffer:
  6465. Offset    Size    Description    (Table 1216)
  6466.  00h    WORD    (call) 0000h (no results returned)
  6467. SeeAlso: #1215
  6468. --------N-21E2--SF1A-------------------------
  6469. INT 21 - Novell NetWare - FILE SERVER - GET PATH FROM DIRECTORY ENTRY
  6470.     AH = E2h subfn 1Ah
  6471.     DS:SI -> request buffer (see #1217)
  6472.     ES:DI -> reply buffer (see #1218)
  6473. Return: AL = status
  6474.         00h successful
  6475. Note:    this function is supported by NetWare 4.0+, Advanced NetWare 1.0+, and
  6476.       Alloy NTNX
  6477. SeeAlso: AH=E2h/SF=01h,AH=E2h/SF=06h,AH=E3h/SF=D7h,AX=F216h/SF=1Ah
  6478.  
  6479. Format of NetWare "Get Path from Directory Entry" request buffer:
  6480. Offset    Size    Description    (Table 1217)
  6481.  00h    WORD    0004h (length of following data)
  6482.  02h    BYTE    1Ah (subfunction "Get Path From Directory Entry")
  6483.  03h    BYTE    volume number (00h-1Fh)
  6484.  04h    WORD    (big-endian) directory entry number
  6485. SeeAlso: #1218,#1458
  6486.  
  6487. Format of NetWare "Get Path from Directory Entry" reply buffer:
  6488. Offset    Size    Description    (Table 1218)
  6489.  00h    WORD    (call) size of following results record (max 200h)
  6490.  02h 256 BYTEs    path
  6491. SeeAlso: #1217,#1458
  6492. --------!---Section--------------------------
  6493.